User、Department、UserDepartment の 3 つのテーブルがあります。ユーザーは複数の部門に関連付けることができ、部門は複数のユーザーに関連付けることができます。次のように、両側で多対多の流暢なマッピングを使用します。
部門用
HasManyToMany(x => x.Users)
.Table("UserDepartment")
.ParentKeyColumn("DepartmentId")
.ChildKeyColumn("UserId")
.AsSet()
.Cascade.All();
ユーザー向け
HasManyToMany(x => x.Departments)
.Table("UserDepartment")
.ParentKeyColumn("UserId")
.ChildKeyColumn("DepartmentId")
.AsBag()
.Inverse()
.Cascade.None();
すべてのテーブルは、次のように、HiLo Id ジェネレーターとほぼ同様のマッピングを使用します。
Id(p => p.Id).GeneratedBy.HiLo("HiLo", "NextHi", "32", "ForTable = 'UserDepartment'");
一部のユーザーを部門 nhiberante に追加しようとすると、次のエラーで失敗します。
バッチ コマンドを実行できませんでした。[SQL: SQL が利用できません]。内部例外: 値 NULL を列 'Id'、テーブル 'test.dbo.UserDepartment' に挿入できません。列はヌルを許可しません。INSERT が失敗しました。\r\nステートメントは終了しました。
私は同じ HiLo ジェネレーターを他のテーブルで使用しているので、この失敗の原因にはならないと確信しています。
誰かがこの問題に光を当てることができますか? 過去にnull Id挿入に問題があったことを思い出すことができ、コレクションで逆マッピングを使用して解決しましたが、両側で逆マッピングを使用できないため、別の解決策が必要です。