2017-07-12 3 views
0

Ich erstelle ein 3-schichtiges Programm, in dem beim Löschen eines Datensatzes ein Fehler auftritt, weil der Datensatz mit einer anderen Tabelle (Fremdschlüssel) verknüpft ist. Ich möchte eine Validierung machen, dass, wenn der Datensatz zu einer anderen Tabelle verwandt ist, ich eine Meldung anzeigen werde, die den Datensatz nicht löschen kann, xq, wenn ich den Fehler oder die Ausnahme erhalte, das Programm nicht mehr funktioniert. Oder mach sowas.Datensatz löschen, der sich auf eine andere linq-Entitätstabelle bezieht

If (query> 0) {Fehler beim Löschen}

Else {Löschen}

Wie wäre die Abfrage in Linq Einheit und in welcher Schicht würde ich die Datenschicht, Geschäftslogik und Präsentation habe ..

+0

den Code zeigen Können Sie zum Löschen Entität geschrieben haben? Und wie nennst du diesen Code? –

+0

Entweder die Existenz von verwandten Daten prüfen ('context.Foo.Any (f => f.ParentId == parentIdToDelete);') oder Sie könnten die Ausnahme "fangen" und entsprechend umgehen. –

+0

de la capa datos tengo öffentliche void Eliminar (int id) { var = = BaseDatos.Proveedor.Where (x => x.Medicamento.Any()); var proveedoresParaEliminar = BaseDatos.Proveedor.Where (p => p.IdProveedor == id); foreach (var Artikel in proveedoresParaEliminar) { BaseDatos.Proveedor.Remove (item); } BaseDatos.SaveChanges(); } – Ivan

Antwort

0

In der Datenschicht: Klasse Repository-Provider

public void Eliminar(int id) { 
    var resp = BaseDatos.Proveedor.Where(x => x.Medicamento.Any()); 
    var proveedoresParaEliminar = BaseDatos.Proveedor.Where(p => 
    p.IdProveedor == id); 

    foreach (var item in proveedoresParaEliminar) {    
     BaseDatos.Proveedor.Remove(item);    
    } 
    BaseDatos.SaveChanges(); 
} 

In der Business-Logik-Schicht: Klasse Manager Anbieter:

public void Eliminar(int id) {  
    repo.Eliminar(id); 
} 

In der Schicht Präsentation:

private void btEliminar_Click(object sender, EventArgs e) { 
    Gestor.Eliminar(); 
} 
Verwandte Themen