Entity Framework: Überprüfen Sie alle Beziehungen einer Entität für die Verwendung von Fremdschlüsseln

8

Ich habe eine Entität, nennen wir sie CommonEntity , die einen Primärschlüssel hat, der in vielen anderen Entitäten als Fremdschlüssel verwendet wird. Wenn die Anwendung entwickelt wird, werden diese Links weiter wachsen.

Ich würde gerne sehen, ob CommonEntity sicher gelöscht werden kann (d. h. es wird nicht von anderen Entitäten verwendet).

Ich weiß, dass ich es tun kann

%Vor%

Aber ich hoffe auf eine Möglichkeit, alle Beziehungen automatisch zu überprüfen, da ich nicht die Idee liebe, diesen Code jedes Mal, wenn wir eine neue Beziehung hinzufügen, manuell ändern zu müssen. Vielleicht ist etwas in EF4 +, das mir nicht bekannt ist?

Ich dachte, es wäre möglich, einen Transaktionsbereich zu verwenden, um das Objekt einfach zu löschen und es zurückzuspielen, wenn es fehlschlägt, aber ich war mir nicht sicher, ob es bei diesem Ansatz irgendwelche negativen Nebenwirkungen gab.

Gibt es einen besseren Ansatz?

BEARBEITEN: Sieht so aus, als hätte VS2012 EF5 verwendet, obwohl das Projekt .Net 4 ist. Daher hat es das Modell mit POCOs erstellt, obwohl es aus einer DB generiert wurde.

    
BenC3 12.10.2012, 01:59
quelle

4 Antworten

8

Lass es einfach scheitern. Wenn die Entität viele Beziehungen hat, kann diese Überprüfung sehr schwer sein.

%Vor%     
y34h 12.10.2012, 06:13
quelle
4

Sie können dies versuchen:

%Vor%     
user848765 12.10.2012 04:49
quelle
2

Sie können Reflection dafür verwenden (wenn Sie nicht "Fail Delete On SQL" verwenden möchten) Ich schreibe das, weil ich Entity NICHT LÖSCHEN will, will nur wissen, ob es sich auf irgendwas bezieht oder nicht!

%Vor%

HINWEIS: Der Kontext darf nicht disloziert sein und der Proxy muss aktiviert sein UND WISSEN, DASS ES ALLE ZUGEHÖRIGEN AUFZEICHNUNGEN ZUR SPEICHERUNG ERHALTEN WIRD (ES IST ZU SCHWER)

    
mX64 04.08.2014 09:47
quelle
0

Finden Sie zuerst die Entität, die Sie löschen möchten, indem Sie in EF suchen und die Entität an die Funktion übergeben. Wenn die Funktion wahr zurückgibt, bedeutet das, dass sie nicht gelöscht werden kann und fremde Daten vorhanden sind Kind Datensätze und kann gelöscht werden ..

%Vor%     
Pramod Singh 15.08.2014 19:06
quelle