2016-08-11 3 views
0
Löschen

Ich habe zwei Entity-Material und Lieferanten, wegen der Beziehung ich ein mittleres Unternehmen schaffen MaterialWithSuppliers:MVC5 mit EF viele zu vielen, wenn

[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; } 

wenn ich versuche, einen Datensatz in Material zu löschen, muß ich löschen sie den Datensatz in MaterialWithSuppliers zunächst, aber seltsame Dinge passiert, nachdem ich versuchen, es zu löschen wie folgt aus:

var MaterialWithSupplier = db.MaterialWithSuppliers.Where(m => m.MaterialNo == MaterialNo).ToList(); 
if (MaterialWithSupplier.Count > 0) 
    db.MaterialWithSuppliers.Remove(MaterialWithSupplier[0]); 

Alle Aufzeichnungen in MaterialWithSuppliers gelöscht wurden. Warum?

Antwort

0

Wenn ich Sie richtig verstanden habe:

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(); 

Erstens haben Sie alle Objekte abzurufen, dass Sie aus MaterialWithSuppliers Tabelle entfernen möchten. Zweitens, finden die material Einheit und löschen Sie es.
Schließlich speichern Änderungen in Ihrer Datenbank.

+0

Vielen Dank, ich habe Ihre Methode versucht, aber nicht nur alle Datensätze in MaterialWithSuppliers verschwunden sind, sondern auch alle Datensätze in Material ist weg – Fred

0

der Grund ist, dass: modelBuilder.Entity<Material>().MapToStoredProcedures(); nachdem ich diese Linie fallen, es funktioniert in der Regel

Verwandte Themen