AssertionFailure: “null identifier” - FluentNH + SQLServerCE

不问归期 提交于 2019-11-28 23:26:37

There's a "bug" when using NHibernate with SQL CE identity columns. There are two workarounds that I know of:

1 - Set the connection.release_mode property to on_close in configuration:

mySessionFactory = Fluently.Configure()
    .Database(MsSqlCeConfiguration.Standard
    .ConnectionString("Data Source=MyDB.sdf"))
    .Mappings(m => m.FluentMappings.AddFromAssemblyOf())
    .ExposeConfiguration(BuildSchema)
    .ExposeConfiguration(x => x.SetProperty("connection.release_mode", "on_close"))
    .BuildSessionFactory();

2 - Perform inserts in a transaction:

    using (ISession session = DB.OpenSession())
    using (ITransaction txn = session.BeginTransaction())
    {
        session.Save(employee);
        txn.Commit();
    }

I realize the question is more than a month old but I hope this answer is still of use to you.

Is is still the true. Even first call to SELECT @@IDENTITY returns corect value, but seconds returns null

I use

*connection.driver_class = NHibernate.Driver.SqlServerCeDriver dialect: NHibernate.Dialect.MsSqlCeDialect*

After adding property *connection.release_mode: on_close* to my NHIbernate configuration it works

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!