2010-04-27 6 views
7

Ich frage mich, ob EF4 Cross-Datenbankbeziehungen unterstützen? Zum Beispiel:EF4 Cross-Datenbank-Beziehungen

db1

Author 
    Id 
    Name 

db2

Posts 
    Id 
    Content 
    db1.Author.Id 

Was idealerweise muss ich diese Beziehung in meinem EF4 Modell zu erhalten tun?

Haben Sie eine Idee?

Dank

Antwort

5

Ich habe gefunden this entry in Microsoft Connect, die die Frage über die Unterstützung in diesem Moment von EF beantwortet beantwortet (eigentlich wird es noch nicht unterstützt).

Auch gefunden a thread in Social MSDN über dieses Problem.

Andere Links auf Stack-Überlauf:

Zusammengefasst sind die einzigen Alternativen gegeben sind:

  1. Using views in EF

  2. Use NHibernate instead

3

Ich begann vor kurzem ein Projekt, das Entity Framework mit zwei Datenbanken, eine Oracle und einem SQL Server verwendet. Ich konnte keine Informationen bezüglich datenbankübergreifender oder multipler Datenbankunterstützung im Entitätsrahmen finden.

Die meisten Posts aus dem MS Entity-Framework-Team sind ein paar Jahre alt und weisen darauf hin, dass die Aufnahme von zwei Datenbanken in ein einzelnes Modell keine Funktion ist, die in Kürze hinzugefügt wird. Ich wäre daran interessiert, eine konkrete Antwort darauf zu haben, ob es 2010 selbst in die Liste aufgenommen wurde, obwohl ich annehme, dass die Antwort nein ist.

Dieses Problem wird derzeit von einem Projekt umgangen, das über ein separates Entitätsmodell für jede Datenbank verfügt. Dies hat das Problem für die Mehrzahl der Szenarien, die wir bisher im Projekt kennengelernt haben, gelöst.

In Fällen, in denen wir die Daten aus den beiden Datenbanken zur gleichen Zeit abfragen mussten, erstellten wir einfach eine Ansicht in der einen oder anderen Datenbank. Da wir Oracle und SQL Server verwenden, würde diese Ansicht entweder einen Linked Server (SQL) oder einen DBLink (Oracle) verwenden.

Der Nachteil von Views im Entity-Framework ist, dass wir mehr Zeit aufwenden mussten als erwartet, dass die Primärschlüssel funktionieren.

Hoffe, das hilft.

4

Wenn Synonyme Ihre Datenbank unterstützt, können Sie EF Trick mehrere Datenbanken zu überbrücken. Ich schrieb auf, wie man es macht here.

Im Grunde haben Sie am Ende eine edmx-Datei pro Datenbank und ein Skript, das sie in eine einzige edmx-Datei zusammenführt. Synonyme werden verwendet, um mithilfe des tatsächlichen Tabellennamens eine Datenbank von einer anderen Datenbank zu referenzieren, sodass EF beim Versuch, auf database2.table aus Datenbank1 zuzugreifen, keine Anpassung auslöst. Sie müssen im EF-Modell noch manuell Verknüpfungen zwischen den beiden Datenbanken einrichten. Nach dem Einrichten bleiben sie jedoch erhalten, auch wenn Sie das Zusammenführungsskript erneut ausführen.

Skripte zur Einrichtung Synonyme und die edmx Dateien zusammenführen werden in den Link gepostet

+0

Ich schlage vor, Sie meinen Uservoice Vorschlag hier vote up: http://visualstudio.uservoice.com/forums/121579-visual-studio/ suggestions/2730532-make-entity-framework-designer-support-synonyms Wenn wir im Designer Synonym-Unterstützung bekommen können, dann ist alles ganz einfach. Ermutigen Sie auch alle anderen, die an datenbankübergreifender Unterstützung interessiert sind, dies zu bestätigen. –