NHibernate.ObjectNotFoundException:不存在具有给定标识符的行

Ric*_*icL 5 nhibernate fluent-nhibernate asp.net-mvc-3

这是我的错误:

NHibernate.ObjectNotFoundException: No row with the given identifier exists[Project.Core.Entities.User#(GUID)]
at Hibernate.Impl.SessionFactoryImpl.DefaultEntityNotFoundDelegate.HandleEntityNotFound(String entityName, Object id) 
at NHibernate.Event.Default.DefaultLoadEventListener.Load(LoadEvent event, IEntityPersister persister, EntityKey keyToLoad, LoadType options)
Run Code Online (Sandbox Code Playgroud)

该系统的一位用户偶然遇到了这个错误,这对我来说完全没有意义。我所知道的:

  1. 教师表引用用户表。
  2. 不知何故,教师表中有一行引用用户表中的行,但用户表中不存在该行。

知道为什么会发生这种情况吗?请指教!

改写我的 Qn:

我知道该错误是什么意思,但我似乎不明白是什么导致了丢失的用户行?我已将其全部放在 Cascade.ALL 上。我认为这与删除无关。上述情况可能会发生哪些情况?

编辑2:

请参考 FNH 的映射:这有什么问题吗?

public void Override(AutoMapping<Teacher> mapping)
    {
        mapping.References(x => x.User).Cascade.All().Not.LazyLoad();
    }
Run Code Online (Sandbox Code Playgroud)

谢谢!

Pet*_*ter 1

我猜你在数据库中错过了 FK 约束,否则你不会在 FK 关系上丢失任何记录。在数据库中添加 FK 和 Cascade 规则,就不会出现任何“缺失行异常”。当您尝试执行与数据库模型不符的操作时,将会引发错误。