MVC5

2016-08-11 7 views
0

삭제 나는 관계의 내가 중간 엔티티 MaterialWithSuppliers을 만들 수 있기 때문에, 두 개의 엔티티 재료 및 공급 업체가 있습니다MVC5

[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에서 레코드를 삭제,하지만이처럼 삭제하려고 후 이상한 일들이 발생합니다 MaterialWithSuppliers에서

var MaterialWithSupplier = db.MaterialWithSuppliers.Where(m => m.MaterialNo == MaterialNo).ToList(); 
if (MaterialWithSupplier.Count > 0) 
    db.MaterialWithSuppliers.Remove(MaterialWithSupplier[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 엔티티를 찾아서 삭제하십시오.
마지막으로 데이터베이스에 변경 사항이 저장됩니다.

+0

덕분에 많이 작동, 당신의 방법을 시도하지만, MaterialWithSuppliers에서뿐만 아니라 모든 기록은 사라뿐만 아니라 모든 레코드에 재료가 없어졌습니다. – Fred

0

이유가 있다는 것입니다 :이 라인을 드롭 한 후 modelBuilder.Entity<Material>().MapToStoredProcedures(); , 그것은 일반적으로