4

これが私のエラーです:

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)

システムのユーザーの1人がこのエラーを偶然見つけましたが、これは私にはまったく意味がありません。私が知っていること:

  1. TeacherテーブルはUserテーブルを参照します。
  2. どういうわけか、Teacherテーブルにはユーザーのテーブルの行を参照する行がありますが、その行はユーザーのテーブルに存在しません。

なぜこれが起こっているのか考えていますか?お知らせ下さい!

私のQnを言い換えます:

エラーの意味はわかっていますが、ユーザー行が見つからない原因がわからないようです。すべてCascade.ALLに配置しました。削除とは関係ないと思います。上記が発生する可能性のあるシナリオは何ですか?

編集2:

FNHを介したマッピングを参照してください:これに関する問題はありますか?

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

ありがとう!

4

5 に答える 5

4

'NotFound'プロパティを'Ignore'に設定しました

于 2013-01-21T01:46:53.250 に答える
2

Fluent NHibernate for C# では、

HasManyToMany(x => x.Bars).Table("foobars")
                        .ParentKeyColumn("FooId")
                        .ChildKeyColumn("Id")
                        .NotFound.Ignore();
于 2015-03-27T10:28:45.150 に答える
1

データベースでFK制約を見逃していると思います。そうしないと、FKリレーションに欠落しているレコードがありません。データベースにFKルールとカスケードルールを追加すると、「行の欠落の例外」が発生することはありません。データベースモデルと一致しないことを行おうとすると、エラーが発生します。

于 2012-11-01T13:45:01.973 に答える