流利的NHibernate新手:Row被另一个交易更新或删除

时间:2011-04-10 12:51:15

标签: sql-server asp.net-mvc-3 fluent-nhibernate

我正处于使用Fluent NHibernate构建数据库的早期阶段。我在ASP.NET MVC 3中实现了一个工作单元模式,让NHibernate为我更新我的数据库模式。要插入/更新我的初始数据,我有一个Database控制器,其Update操作尝试SaveOrUpdate(...) User实体(管理员用户)进入{{1}表格。

通过Visual Studio手动删除所有用户记录并重新运行Users操作以重新填充Update表后,我收到以下Users例外:

NHibernate.StaleObjectStateException

注意:保存或更新的用户ID是Guid,其值大于(3105 ...)。

我做错了什么?

2 个答案:

答案 0 :(得分:12)

解决了映射

NHibernate使用Guid梳子方法为我分配用户ID(Guid)。手动指定ID会使映射绊倒。我更喜欢自己分配这些ID,因此我将User实体ID映射更改为在UserMap类中手动分配:

Id(x => x.Id).GeneratedBy.Assigned();

答案 1 :(得分:0)

当更改的上下文时,也会发生此错误,如果您是PK,则会发生此错误。

解决方案是在Update(data, data.code.Trim());

时在PK中应用Trim()