开始 Fluent NHibernate






4.81/5 (18投票s)
从 Visual Studio 开始你的项目,告别 SQL Server 和表
引言
从 Visual Studio 开始你的项目,告别 SQL Server 和表。
什么是 NHibernate?我们为什么要使用这项技术?如何开始使用 NHibernate?
NHibernate 是一个 ORM(对象关系映射)工具,它将关系数据和对象映射起来。使用 NHibernate 时,你无需从创建表开始,你只需要根据你的业务编写实体类,NHibernate 就会为你创建表。
我们(应用程序开发者)使用 NHibernate 来避免使用、分析和更改数据库带来的压力。使用 NHibernate 可以避免甚至进入你的 DBMS,当你需要更改某个表中的任何内容时,你只需要修改你的实体,而无需进入数据库并更改列和关系...等等。
这篇文章将提供你获得信心并继续使用 NHibernate 的一切。
步骤 1:创建你的业务实体
第一步是在你的项目中创建你的实体
public class Employee
{
public virtual int Id {get; set;}
public virtual string FirstName {get; set;}
public virtual string Position {get; set;}
public virtual Department EmployeeDepartment
{get; set;} // Represent the relation between Employee and Department
}
public class Department
{
public virtual int Id {get; set;}
public virtual string Name {get; set;}
public virtual string PhoneNumber {get; set;}
}
记住为你的属性添加 virtual
关键字,NHibernate 会在运行时使用它来创建代理以允许延迟加载(现在你可以跳过它,我将在下一篇文章中深入讨论。)
步骤 2:创建映射实体
现在你必须为之前创建的每个实体创建一个映射实体,它代表了 NHibernate 的核心。实体发生的任何未来更改都应在此处更改映射。
class EmployeeMap : ClassMap<employee /><Employee>
{
//Constructor
public EmployeeMap()
{
Id(x => x.Id);
Map(x => x.FirstName);
Map(x => x.Position);
References(x => x.EmployeeDepartment).Column("DepartmentId");
Table("Employee");
}
}
class DepartmentMap : ClassMap<department /><Department>
{
//Constructor
public DepartmentMap()
{
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.PhoneNumber);
Table("Department");
}
}
记住为你的属性添加 virtual 关键字,NHibernate 会在运行时使用它来创建代理以允许延迟加载(在我的文章中,我更关注我们如何使用这项技术,而不是为什么使用它以及需要大量讨论的问题,如果你需要更多信息)。
NHibernate 方法(关键字)
Map
:用于为选定的属性创建列References
:用于创建多对一关系,应用于多的一侧Table
:确定表名(可选)
步骤 3:创建配置
现在你必须编写配置行,这些行将只编写一次,你的程序的每次执行都将执行这些行,这些行将根据你的更新修改数据库
public class NHibernateHelper
{
private static ISessionFactory _sessionFactory;
private static ISessionFactory SessionFactory
{
get
{
if (_sessionFactory == null)
InitializeSessionFactory();
return _sessionFactory;
}
}
private static void InitializeSessionFactory()
{
_sessionFactory = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2008
.ConnectionString(
@"Server=(local);initial catalog=xxxxx;
user=xxxxx;password=xxxxx;") // Modify your ConnectionString
.ShowSql()
)
.Mappings(m =>
m.FluentMappings
.AddFromAssemblyOf<Program>())
.ExposeConfiguration(cfg => new SchemaExport(cfg)
.Create(true, true))
.BuildSessionFactory();
}
public static ISession OpenSession()
{
return SessionFactory.OpenSession();
}
}
现在你只需要运行你的应用程序并转到 SQL Server 查看你的表。
注意:不要忘记修改 ConnectionString
。
步骤 4:插入你的数据以测试项目
现在你必须通过在 MAIN 中编写这些行将一些行保存到你的数据库中
static void Main(string[] args)
{
using (var session = NHibernateHelper.OpenSession())
{
using (var transaction = session.BeginTransaction())
{
var DepartmentObject = new Department
{Name = "IT", PhoneNumber = "962788700227" };
session.Save(DepartmentObject);
transaction.Commit();
Console.WriteLine("Department Created: " + DepartmentObject.Name);
}
}
}
希望这篇文章能为你提供 Fluent NHibernate 的基础知识。