📅  最后修改于: 2023-12-03 14:44:36.386000             🧑  作者: Mango
NHibernate是一个开源的对象关系映射(ORM)框架,可用于将C#/.NET对象映射到关系数据库中。
本文将介绍使用NHibernate进行基本的CRUD(Create, Read, Update, Delete)操作的方法。
在使用NHibernate之前,需要先安装NHibernate和FluentNHibernate,可以使用NuGet进行安装。
Install-Package NHibernate
Install-Package FluentNHibernate
接下来,我们将创建一个Person类作为示例。
public class Person
{
public virtual int Id { get; set; }
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
public virtual DateTime DateOfBirth { get; set; }
}
使用FluentNHibernate配置NHibernate。
public class NHibernateSessionFactory
{
public static ISessionFactory CreateSessionFactory()
{
return Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2012.ConnectionString(c => c
.FromConnectionStringWithKey("ConnectionString")))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<Person>())
.BuildSessionFactory();
}
}
对于创建操作,我们需要打开一个会话、创建一个数据实体对象、保存该对象并提交会话。
using (var session = NHibernateSessionFactory.CreateSessionFactory().OpenSession())
{
using (var transaction = session.BeginTransaction())
{
var person = new Person
{
FirstName = "Jack",
LastName = "Jones",
DateOfBirth = new DateTime(1990, 1, 1)
};
session.Save(person);
transaction.Commit();
Console.WriteLine("Person created with Id: " + person.Id);
}
}
对于读取操作,我们可以通过使用session.Query<T>()或session.Get<T>(id)方法获取数据。
using (var session = NHibernateSessionFactory.CreateSessionFactory().OpenSession())
{
var persons = session.Query<Person>().ToList();
foreach (var person in persons)
{
Console.WriteLine(person.FirstName + " " + person.LastName + " " + person.DateOfBirth);
}
var personById = session.Get<Person>(1);
Console.WriteLine(personById.FirstName + " " + personById.LastName + " " + personById.DateOfBirth);
}
对于更新操作,我们需要获取数据、更改数据、提交更改和提交会话。
using (var session = NHibernateSessionFactory.CreateSessionFactory().OpenSession())
{
using (var transaction = session.BeginTransaction())
{
var person = session.Get<Person>(1);
person.FirstName = "John";
person.LastName = "Smith";
session.Update(person);
transaction.Commit();
Console.WriteLine("Person updated with Id: " + person.Id);
}
}
对于删除操作,我们需要获取数据、删除数据并提交会话。
using (var session = NHibernateSessionFactory.CreateSessionFactory().OpenSession())
{
using (var transaction = session.BeginTransaction())
{
var person = session.Get<Person>(1);
session.Delete(person);
transaction.Commit();
Console.WriteLine("Person deleted with Id: " + person.Id);
}
}
本文介绍了如何使用NHibernate进行基本的CRUD操作,包括创建、读取、更新和删除。如果您还没有使用NHibernate,建议您尝试使用它来管理您的数据。感谢您的阅读!