我正处于使用Fluent NHibernate构建数据库的早期阶段。我在ASP.NET MVC 3中实现了一个工作单元模式,让NHibernate为我更新我的数据库模式。要插入/更新我的初始数据,我有一个Database
控制器,其Update
操作尝试SaveOrUpdate(...)
User
实体(管理员用户)进入{{1}表格。
通过Visual Studio手动删除所有用户记录并重新运行Users
操作以重新填充Update
表后,我收到以下Users
例外:
NHibernate.StaleObjectStateException
注意:保存或更新的用户ID是Guid,其值大于(3105 ...)。
我做错了什么?
答案 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())
;