ResourcePackage
クラスとクラスがありますPackageItem
:
public ResourcePackageMap()
{
DiscriminatorValue((int)ResourceObjectType.Package);
HasMany(x => x.Children).KeyColumn("AggregationObjectId").Cascade.AllDeleteOrphan();
}
public PackageItemMap()
{
Id(x => x.Id, "AggregationLinkId");
References(x => x.ResourceItem, "ChildObjectId");
References(x => x.Package, "AggregationObjectId");
Map(x => x.Order, "OrderWithinAggregation");
Map(x => x.Usage, "Usage");
Table("tbl_Object_Aggregation_Link");
}
次のようなエラーが表示されました。
コレクションを削除できませんでした: [Domain.ResourcePackage.Children#102c589b-fc1c-451d-8300-a0ef00baa21f][SQL: UPDATE tbl_Object_Aggregation_Link SET AggregationObjectId = null WHERE AggregationObjectId = @p0] NHibernate.Exceptions.GenericADOException: コレクションを削除できませんでした: [Domain.ResourcePackage.Children#102c589b-fc1c-451d-8300-a0ef00baa21f] [SQL: UPDATE tbl_Object_Aggregation_Link SET AggregationObjectId = null WHERE AggregationObjectId = @p0] ---> System.Data.SqlClient.SqlException: 値 NULL を列 'AggregationObjectId' に挿入できません。 テーブル 'KDatabase.dbo.tbl_Object_Aggregation_Link'; 列はヌルを許可しません。 更新は失敗します。ステートメントは終了されました。
リレーションシップ テーブルは次のように実行されます。
tbl_Object テーブルと、tbl_Object テーブルへの 2 つの外部キーを含む tbl_Object_Aggregation_Link テーブルがあります。
tbl_Object_Aggregation_Link テーブルのマッピング クラスは次のとおりです。
public class PackageItemMap : ClassMap<PackageItem>
{
public PackageItemMap()
{
Id(x => x.Id, "AggregationLinkId");
References(x => x.ResourceItem, "ChildObjectId");
References(x => x.Package, "AggregationObjectId");
Map(x => x.Order, "OrderWithinAggregation");
Map(x => x.Usage, "Usage");
Table("tbl_Object_Aggregation_Link");
}
}