在我的数据库上使用Fluent nHibernate。
我很困惑为什么我的.Update语句之一似乎创建新数据并将表中的旧数据保留为没有键的孤立行。以此为例:有问题的对象是一个“MetaData”对象,它与“Page”对象具有多对一关系(一个Page可以包含许多MetaData对象)。
因此,如果我有第1页的MetaData元素
Id Page_Id name content
1 1 test1 test1
然后我有一些功能允许用户向页面元数据添加更多名称/内容对。这似乎工作正常:在过程结束时单步执行代码,Page对象具有预期值的预期数量的MetaData对象。因此,假设用户再添加一行值test2,test2。在使用该Page对象调用session.Update之后,我的表看起来像这样:
Id Page_Id name content
1 null test1 test1
2 1 test1 test1
3 1 test2 test2
换句话说,nHibernate已经保存了新数据,但它保留了表中的旧值,其中包含null page_Id。如果表中有多个旧行,则会发生这种情况 - 它们都以这种方式重复和孤立。
我已经检查过Page对象在更新时是否符合预期,并且我确保我的更新方法没有被调用两次。有人能指出我这里可能出现的问题吗?
干杯, 马特