У меня есть два класса. «Продукт» и «Продукт» могут иметь ряд объектов класса «Атрибут»
Когда кто-то редактирует «Продукт», я хотел бы удалить все атрибуты, связанные с этим продуктом, и воссоздать новые (вторая часть работает нормально), но я получаю ошибку, которая останавливает меня при удалении атрибутов.
public ProductMapping()
{
Id(x => x.Id);
Map(x => x.ProductName);
Map(x => x.Description);
Map(x => x.Quantity);
Map(x => x.Price);
Map(x => x.Live);
HasMany(x => x.Images)
.KeyColumn("ProductId")
.Cascade.All()
.Inverse();
HasMany(x => x.Attribute)
.KeyColumn("ProductId")
.Cascade.All();
}
И мое сопоставление атрибутов
public AttributeMapping()
{
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.Value);
Map(x => x.Live);
References(x => x.Product)
.ForeignKey()
.Column("ProductId")
.Cascade.SaveUpdate();
}
Я не уверен, что мой каскад правильный, но я все их перепробовал!
Я пытался получить все атрибуты и сделать
var AttRepository = GetRepository<ForSale.Domain.Attribute>();
foreach (var a in dbProduct.Attribute)
{
AttRepository.Delete(a);
}
удаляя каждого по отдельности, также попытался сделать:
dbProduct.Attributes.Clear();
Опять не получится!
Я получаю ошибку
"Невозможно вставить значение NULL в столбец 'ProductId', таблица '{LocalFilePath} /PRODUCTS.MDF.dbo.Attribute'; столбец не допускает нулевые значения. UPDATE не удается.
Заявление было прекращено. "
dbProduct