6

habe ich diesen Kommentar auf MSDN (link und link): „Beachten Sie, dass unabhängige Verbände oft da Dinge wie N-Tier und Gleichzeitigkeit wird schwierig, mehr vermieden werden sollte“Unabhängige EF4-Verbände - Warum sollten sie vermieden werden?

Ich bin neu in EF4 und ich baue eine n-Tier-Web-App. Das klingt nach einer wichtigen Falle. Kann mir jemand erklären, was das bedeutet?

Antwort

7

Ich denke, es ist persönliche Vorliebe. Ursprünglich wurde EF nur für den Gebrauch von indep erstellt. Assoziationen und ausgerichtet auf einen eher klassischen ERM-Ansatz. Allerdings sind die meisten von uns so abhängig von FKs, dass das Leben sehr komplex wurde. Also gab MS uns FKs in EF4, was bedeutete, dass wir nicht nur die FK als eine Eigenschaft in der abhängigen Entität haben, sondern dass die Beziehungen durch Constraints im konzeptionellen Modell definiert und nicht in den Mappings vergraben sind. Es gibt noch ein paar Beziehungen, die Sie nur mit einer unabhängigen Assoziation definieren können: viele zu viele und eindeutige Fremdschlüssel. Beachten Sie, dass RIA nur FK-Zuordnungen erkennt, wenn Sie beabsichtigen, RIA-Dienste zu verwenden (klingt nicht so).

Wenn Sie also die unabhängigen Zuordnungen bevorzugen, können Sie sie immer noch absolut in EF4 verwenden. Sie werden vollständig unterstützt. Aber wie James vorschlägt, gibt es ein paar weitere Fallen, auf die man achten sollte ... Dinge, die Sie aufgrund der Art und Weise, wie EF insbesondere mit Graphen arbeitet, expliziter machen müssen. Oder der Fall, in dem Sie nur diesen FK wünschen, z. B. Sie haben die ID eines Kunden, aber Sie haben die Instanz nicht. Sie könnten einen Auftrag erstellen, aber ohne diese nette CustomerID FK-Eigenschaft müssen Sie noch ein wenig jonglieren, um die CustomerID dorthin zu bekommen.

hth

3

Wenn Sie neu in EF sind und mit EF4 beginnen, ist die einfache Antwort das zu ignorieren - Sie werden fast sicher Fremdschlüsselverknüpfungen statt unabhängiger Vereinigungen verwenden.

Eine Fremdschlüsselverknüpfung wird durch eine Fremdschlüsselbeziehung in der Datenbank unterstützt, und diese Beziehung wird im konzeptionellen Modell explizit beschrieben. Diese Art von Assoziation ist für EF4 neu und ich verstehe, dass es sich um eine Konzession handelt, die den Problemen mit unabhängigen Vereinigungen folgt.

Wenn Sie das Speicherschema und das konzeptuelle Schema (das ist der Punkt von EF) trennen möchten, möchten Sie nicht, dass Ihr konzeptionelles Schema Dinge wie Fremdschlüssel kennt, da diese eine Datenbank sind) Konzept. Frühere Versionen von EF folgten diesem Ansatz und wir haben dieses Ding eine unabhängige Vereinigung genannt.

Betrachten Sie unabhängige Zuordnungen als Zuordnungen, die von EF ohne Kenntnis des zugrundeliegenden Fremdschlüssels verfolgt werden. EF unterstützt dies immer noch, aber sie haben erhebliche Schwächen.

EF4 in VS2010 verwendet Ihre Fremdschlüssel und erstellt Fremdschlüsselbeziehungen, sofern Sie nichts anderes angeben. Im Großen und Ganzen funktionieren diese Arbeiten wie erwartet. Es gibt noch einige Fehler - z. um kaskadieren löscht.

Wenn Sie EF lernen wollen - ich kann dieses Buch empfehlen:

http://learnentityframework.com/learnentityframework/

Alles, was Sie wissen wollen, erklärt sehr deutlich.

+1

Okeedoke. Aber was genau sind die Probleme, die mit n-Tier und Parallelität verursacht werden? – anon

+0

Nun, der Hauptunterschied außer dem Schemaunterschied besteht darin, dass eine Entität mit einer unabhängigen Assoziation den Fremdschlüssel in der konzeptuellen Ebene nicht verfügbar macht. Die Zuordnung wird in einem separaten Objekt verwaltet. Je nachdem, wie Sie Ihre Anwendung entwerfen, ist es komplexer, diese zusätzlichen Informationen zwischen den Ebenen zu übertragen. Fremdschlüsselzuordnungen sind einfach einfacher zu bearbeiten, da Sie den Fremdschlüssel einfach direkt auf die Entität setzen können - oder die betreffende Entität/Entität ändern. –

+0

"Weniger einfach zu arbeiten" in meinem Kopf bedeutet nicht unbedingt "vermeiden". Letzteres legt nahe, dass es spezifische Fallstricke gibt. Gibt es irgendwelche Artikel über diese Fallstricke? (Ich habe Julia Lerman's Buch, BTW.) – anon

Verwandte Themen