gpt4 book ai didi

nhibernate - Basic Fluent NHibernate 程序编译并运行,但没有保存到数据库或从数据库加载任何内容

转载 作者:行者123 更新时间:2023-12-02 02:34:35 24 4
gpt4 key购买 nike

我正在尝试一个非常简单的 Fluent Nhibernate 示例:SQL 2005 数据库,一张表,VS2008 控制台应用程序。该表在程序开始前有一条记录。

我想添加一条记录,然后显示表中的所有记录。程序编译成功,运行无异常,但无任何记录显示。 HBM 映射文件也未创建。看起来该程序完全忽略了数据库(尽管它连接到它)。

这是我的代码 - 我尽量保持最小化:

实体:

namespace FluentNhibernationConsole.Entities
{
public class Sorder
{
public virtual int Id { get; private set; }
public virtual DateTime DateCreated { get; set; }

}
}

映射:

namespace FluentNhibernationConsole.Mappings
{
class SorderMap : ClassMap<Sorder>
{
public SorderMap()
{
Id(x => x.Id, "SorderId");
Map(x => x.DateCreated);
}
}
}

程序本身:

namespace FluentNhibernationConsole
{
class Program
{
private static ISessionFactory CreateSessionFactory()
{
return Fluently.Configure()
.Database(MsSqlConfiguration
.MsSql2005
.ShowSql()
.ConnectionString(@"server=.\sqlexpress;database=lsdb;Integrated Security=SSPI;")
)
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<Program>()
.ExportTo(@"d:\temp\nh")
)
.BuildSessionFactory();
}

static void Main(string[] args)
{
var sessionFactory = CreateSessionFactory();
using (var session = sessionFactory.OpenSession())
{
using (var transaction = session.BeginTransaction())
{
var order1 = new Sorder {DateCreated = DateTime.Now};
transaction.Commit();
}
using (session.BeginTransaction())
foreach (var order in session.CreateCriteria(typeof(Sorder)).List<Sorder>())
Console.WriteLine("Order: " + order.DateCreated.ToLongTimeString());
}
Console.ReadKey();
}

}
}

最佳答案

正如您已经注意到的,您忘记了 Save() 您的新实体。

using (var transaction = session.BeginTransaction())
{
var order1 = new Sorder {DateCreated = DateTime.Now};
session.Save( order1 );
transaction.Commit();
}

并且您的 ClassMap 应该是公开的

public class SorderMap : ClassMap<Sorder>

关于nhibernate - Basic Fluent NHibernate 程序编译并运行,但没有保存到数据库或从数据库加载任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2345800/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com