- NHibernate 教程
- NHibernate - 首页
- NHibernate - 概述
- NHibernate - 架构
- NHibernate - ORM
- NHibernate - 环境设置
- NHibernate - 快速入门
- NHibernate - 基础ORM
- NHibernate - 基础CRUD操作
- NHibernate - 分析器
- 为映射文件添加IntelliSense
- NHibernate - 数据类型映射
- NHibernate - 配置
- NHibernate - 覆盖配置
- NHibernate - 批量大小
- NHibernate - 缓存
- NHibernate - 组件映射
- NHibernate - 关系
- NHibernate - 集合映射
- NHibernate - 级联操作
- NHibernate - 延迟加载
- NHibernate - 反向关系
- NHibernate - Load/Get
- NHibernate - LINQ
- NHibernate - 查询语言
- NHibernate - Criteria 查询
- NHibernate - QueryOver 查询
- NHibernate - 原生SQL
- NHibernate - Fluent NHibernate
- NHibernate 有用资源
- NHibernate - 快速指南
- NHibernate - 有用资源
- NHibernate - 讨论
NHibernate - 快速入门
本章我们将学习如何使用NHibernate创建一个简单的示例。我们将构建一个简单的控制台应用程序。要创建控制台应用程序,我们将使用Visual Studio 2015,它包含创建和测试应用程序所需的所有功能,并使用NHibernate包。
以下是使用Visual Studio中提供的项目模板创建项目步骤。
步骤1 - 打开Visual Studio,单击“文件”→“新建”→“项目”菜单选项。
步骤2 - 将打开“新建项目”对话框。
步骤3 - 从左侧窗格中选择“模板”→“Visual C#”→“Windows”。
步骤4 - 在中间窗格中,选择“控制台应用程序”。
步骤5 - 在“名称”字段中输入项目名称“NHibernateDemoApp”,然后单击“确定”继续。
步骤6 - Visual Studio创建项目后,您将在“解决方案资源管理器”窗口中看到许多显示的文件。
正如您所知,我们已经创建了一个简单的控制台应用程序项目,现在我们需要将NHibernate包包含到我们的控制台项目中。
转到“工具”菜单,然后选择“NuGet包管理器”→“包管理器控制台”,这将打开“包管理器控制台”窗口。
指定上面包管理器控制台窗口中显示的命令,然后按Enter键,它将下载所有NHibernate依赖项并创建对所有必需程序集的引用。安装完成后,您将看到如下所示的消息。
现在我们已经添加了NHibernate,我们可以开始实现。因此,我们将从映射一个名为Student的非常简单的表开始,该表只有一个名为ID的整数主键以及FirstName和LastName列。
我们需要一个类来表示这个学生,所以让我们创建一个名为Student的新类,方法是右键单击解决方案资源管理器中的项目,然后选择“添加”→“类”,这将打开“添加新项”对话框。
在名称字段中输入Student.cs,单击“添加”按钮。在这个Student类中,我们需要有一个名为ID的整数主键,并且我们需要创建这个字符串,FirstName和LastName字段,如下所示的Student类的完整实现。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace NHibernateDemoApp { class Student { public virtual int ID { get; set; } public virtual string LastName { get; set; } public virtual string FirstMidName { get; set; } } }
在处理NHibernate应用程序中的模型时,最简单的方法是将所有字段设为virtual。所以这是我们将使用的简单的NHibernate模型,并将它映射到后端数据库。
现在让我们转到Program类中的Main方法,并创建一个新的NHibernate配置对象。
我们需要提供的第一个内容是连接字符串。这是一个特定于数据库的连接字符串,查找连接字符串最简单的方法是右键单击SQL Server对象资源管理器中的数据库,然后选择“属性”。
它将打开“属性”窗口,现在向下滚动,您将在“属性”窗口中看到“连接字符串”字段。
复制连接字符串并在代码中指定。以下是Main方法的实现,我们需要在其中进行NHibernate配置。
using NHibernate.Cfg; using NHibernate.Dialect; using NHibernate.Driver; using System; using System.Linq; using System.Reflection; namespace NHibernateDemoApp { class Program { static void Main(string[] args) { var cfg = new Configuration(); String Data Source = asia13797\\sqlexpress; String Initial Catalog = NHibernateDemoDB; String Integrated Security = True; String Connect Timeout = 15; String Encrypt = False; String TrustServerCertificate = False; String ApplicationIntent = ReadWrite; String MultiSubnetFailover = False; cfg.DataBaseIntegration(x = > { x.ConnectionString = "Data Source + Initial Catalog + Integrated Security + Connect Timeout + Encrypt + TrustServerCertificate + ApplicationIntent + MultiSubnetFailover"; x.Driver<SqlClientDriver>(); x.Dialect<MsSql2008Dialect>(); }); cfg.AddAssembly(Assembly.GetExecutingAssembly()); var sefact = cfg.BuildSessionFactory(); using (var session = sefact.OpenSession()) { using (var tx = session.BeginTransaction()) { //perform database logic tx.Commit(); } Console.ReadLine(); } } } }
在连接字符串之后,我们需要提供一个驱动程序,即SQLClientDriver,然后我们还需要提供一个方言,即SQL Server的版本,我们将使用MS SQL 2008。
NHibernate现在知道如何连接到数据库。我们还需要做的另一件事是提供我们将映射的模型列表。
我们可以通过添加一个程序集来做到这一点,通过指定Assembly.GetExecutingAssembly,程序将在其中找到映射文件。映射文件告诉NHibernate如何将C#类转换为数据库表。
SessionFactory编译了初始化NHibernate所需的所有元数据。SessionFactory可用于构建会话,这大致类似于数据库连接。因此,在using块中使用它是一种合适的方法。我可以说var session等于sessionFactory.OpenSession,我想要在它的事务内部执行此操作。
打开会话后,我们可以告诉会话开始一个新的事务,然后我们可以在其中执行一些逻辑。因此,执行一些数据库逻辑,最后提交该事务。