删除时MVC5与EF多对多

时间:2016-08-11 14:41:26

标签: entity-framework asp.net-mvc-5

我有两个实体材料和供应商,因为关系我创建了一个中间实体<If "%{REQUEST_URI} =~ /\.(gif|jpe?g|png|css|js)$/"> #put your header set stuff here </If>

MaterialWithSuppliers

当我尝试删除Material中的一条记录时,我必须首先删除[Key] [StringLength(150)] public string Id { get; set; } [ForeignKey("Material")] public string MaterialNo { get; set; } public virtual Material Material { get; set; } [ForeignKey("Supplier")] public int SupplierId { get; set; } public virtual Supplier Supplier { get; set; } 中的记录,但是在我尝试删除它之后会发生奇怪的事情:

MaterialWithSuppliers

var MaterialWithSupplier = db.MaterialWithSuppliers.Where(m => m.MaterialNo == MaterialNo).ToList(); if (MaterialWithSupplier.Count > 0) db.MaterialWithSuppliers.Remove(MaterialWithSupplier[0]); 中的所有记录都已删除。为什么呢?

2 个答案:

答案 0 :(得分:0)

如果我理解正确的话:

var mws = db.MaterialWithSuppliers.Where(m => m.MaterialNo == MaterialNo);
var material = mws.FirstOrDefault()?.Material;
db.MaterialWithSuppliers.RemoveRange(mws);
if (material != null) 
{ 
    db.Materials.Remove(material);
}
db.SaveChanges();

首先,您必须从MaterialWithSuppliers表中检索要删除所有对象。 其次,找到 material实体并将其删除。
最后,数据库中的保存更改。

答案 1 :(得分:0)

原因是:LinkedList 在我放弃这一行后,它正常工作