📜  NHibernate-基本的CRUD操作(1)

📅  最后修改于: 2023-12-03 14:44:36.386000             🧑  作者: Mango

NHibernate-基本的CRUD操作

介绍

NHibernate是一个开源的对象关系映射(ORM)框架,可用于将C#/.NET对象映射到关系数据库中。

本文将介绍使用NHibernate进行基本的CRUD(Create, Read, Update, Delete)操作的方法。

环境
  • NHibernate
  • FluentNHibernate
准备工作

在使用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,建议您尝试使用它来管理您的数据。感谢您的阅读!