Там в ResourcePackage
класс и PackageItem
класс:NHibernate: Не удалось удалить коллекцию: Невозможно вставить значение NULL
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");
}
Я получил сообщение об ошибке сказав:
could not delete collection: [Domain.ResourcePackage.Children#102c589b-fc1c-451d-8300-a0ef00baa21f][SQL: UPDATE tbl_Object_Aggregation_Link SET AggregationObjectId = null WHERE AggregationObjectId = @p0] NHibernate.Exceptions.GenericADOException: could not delete collection: [Domain.ResourcePackage.Children#102c589b-fc1c-451d-8300-a0ef00baa21f] [SQL: UPDATE tbl_Object_Aggregation_Link SET AggregationObjectId = null WHERE AggregationObjectId = @p0] ---> System.Data.SqlClient.SqlException: Cannot insert the value NULL into column 'AggregationObjectId', table 'KDatabase.dbo.tbl_Object_Aggregation_Link'; column does not allow nulls. UPDATE fails. The statement has been terminated.
В таблице отношения работает как следовать :
Существует таблица tbl_Object и таблица tbl_Object_Aggregation_Link, которая содержит два внешних ключа к таблице tbl_Object.
А класс отображение 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");
}
}
Привет, Ну, я пробовал Cascade.All(), и он все еще дает мне ту же ошибку. – user1764339
Я снова отредактировал ответ, проверьте его. –