我使用NHibernate与SQL CE桌面数据库,当我尝试进行更新时出现奇怪的错误。 SQL CE引发错误25026:“无法插入外键值,因为对应的主键值不存在。”NHibernate抛出SQL CE错误25026
执行实体对象的集合属性的级联更新时发生异常。实体对象是所有者,集合属性是项目(IList),即特定所有者的项目。在我的数据库中,Owners表的主键是一个三字符的字符串(所有者的首字母),在Projects表中有相应的外键。
这就是为什么我很疑惑:NHibernate可以获取特定所有者的所有记录(例如,“DCV”)。在我的代码中,我可以将一个新的Project对象添加到Owner.Projects中,而没有任何问题。我直接从数据库中获取的Owner对象中获取所有者ID值,所以我知道Owners表中存在主键。但是,当我在我的所有者对象上执行ISession.SaveOrUpdate()时,出现上述的外键错误。
我正在处理一些NHibernate的特质,或者在我的代码或映射中出现一些世俗的错误?任何想法可以帮助我解决这个问题,非常感谢!
大卫Veeneman 远见系统
请在问题中包含您的映射。 – ahsteele 2009-08-05 23:08:45