Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# (NHibernate)PerformSave或Update事件未正确保存_C#_Nhibernate_Events_Fluent Nhibernate - Fatal编程技术网

C# (NHibernate)PerformSave或Update事件未正确保存

C# (NHibernate)PerformSave或Update事件未正确保存,c#,nhibernate,events,fluent-nhibernate,C#,Nhibernate,Events,Fluent Nhibernate,我有一个自定义事件监听器(流畅地)添加到我的配置中,使用: .ExposeConfiguration(c => c.SetListener(ListenerType.SaveUpdate, listener)) 我的侦听器只是在保存或更新之前捕获并处理审核字段(CreatedBy、Modified By等) “entity.IsNew()”是一个检查实体Id是否为“>0”并正确计算的方法。但是,'base.PerformSaveOrUpdate'正在尝试执行插入,而它应该是一个更新,并将

我有一个自定义事件监听器(流畅地)添加到我的配置中,使用:

.ExposeConfiguration(c => c.SetListener(ListenerType.SaveUpdate, listener))
我的侦听器只是在保存或更新之前捕获并处理审核字段(CreatedBy、Modified By等)

“entity.IsNew()”是一个检查实体Id是否为“>0”并正确计算的方法。但是,'base.PerformSaveOrUpdate'正在尝试执行插入,而它应该是一个更新,并将null作为Id传入(它被映射为GeneratedBy.Identity()),我得到以下异常:

"Cannot insert the value NULL into column 'Id', table '...'; column does not allow nulls. INSERT fails.\r\nThe statement has been terminated."

为此,您应该使用PreInsert和PreUpdate方法


下面是一个完整的示例:

为此,您应该使用PreInsert和PreUpdate方法


下面是一个完整的示例:

映射文件看起来像什么?没有什么太疯狂的,一些只读属性、一些可编辑属性和所有子集合都是“.Cascade.Delete()”映射文件看起来像什么?没有什么太疯狂的,一些只读属性、一些可编辑属性和所有子集合都是“.Cascade.Delete()”
"Cannot insert the value NULL into column 'Id', table '...'; column does not allow nulls. INSERT fails.\r\nThe statement has been terminated."