0
私は追加テーブルと多対多の関係を持っています。オブジェクトも参照を持っていますエラー以下ABテーブルに発生します。流暢なNHibernate - 追加のテーブルで何度も何度も - 値NULLを挿入できません。削除時に例外が発生します。
私のデータベーススキーマ:$例外を{ "コレクションを削除できませんでした:[A.AB#20] [SQL:P0 @ AIDは= UPDATE AB SET AID = ヌル]" } NHibernate.Exceptions.GenericADOException
カラム 'AId'に値NULLを挿入できません。 テーブル 'AB';列 はNULLを許可しません。 UPDATEに失敗します。ステートメントは終了されました。
私のクラス:
public class A
{
public virtual int AId { get; protected set; }
public virtual IList<AB> AB { get; set; }
}
public class B
{
public virtual int BId { get; protected set; }
public virtual IList<AB> AB { get; set; }
}
public class AB
{
public virtual int ABId { get; protected set; }
public virtual A A { get; set; }
public virtual B B { get; set; }
public virtual int CustomProperty { get; set; }
}
マイマッピング:
public class AMap : ClassMap<A>
{
public AMap()
{
Table("A");
SchemaAction.None();
Id(x => x.AId)
.GeneratedBy.Identity();
HasMany(x => x.AB)
.KeyColumn("AId")
.Cascade.All();
}
}
public class BMap : ClassMap<B>
{
public BMap()
{
Table("B");
SchemaAction.None();
Id(x => x.BId)
.GeneratedBy.Identity();
HasMany(x => x.AB)
.KeyColumn("BId")
.Cascade.All();
}
}
public class ABMap : ClassMap<AB>
{
public ABMap()
{
Table("AB");
SchemaAction.None();
Id(x => x.ABId)
.GeneratedBy.Identity();
Map(x => x.CustomProperty)
.Not.Nullable();
References(x => x.A)
.Column("AId");
References(x => x.B)
.Column("BId")
.Cascade.None();
}
}
コード:
_session.BeginTransaction();
var a = _session.Get<A>(1);
foreach (var ab in a.AB) {
_session.Delete(ab);
}
_session.Delete(a);
transaction.Commit();
のレコードを削除しますのテーブルとすべての関連レコードテーブル。
最も簡単な解決策は、AB表にNULL可能を援助と入札を作ることですが、私はそこよりよい解決策があり、それがマッピングで解決することができると思います。
は、事前にありがとう:)
同じ問題を:( – gabrieln