我有两个课程。 “Product”和Product可以有许多“Attribute”类对象
当有人编辑“产品”时,我想删除与该产品相关的所有属性并重新创建新的属性(第二部分工作正常)但我收到一个错误,导致我删除属性。
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失败。 声明已经终止。“
数据库产品
答案 0 :(得分:2)
您应将Product.Attribute
映射为Inverse
。