2012-04-08 6 views
2

Ich überlege, Entity Framework für ein Projekt zu verwenden. Ich versuche zu verstehen, wie ich EF konfigurieren kann, um mit einer Datenbankumgebung zu arbeiten, die mit einem Leseserver und einem Schreibserver konfiguriert ist. Alle Aktualisierungen des Schreibservers werden auf die Leseserver repliziert.EF mit verschiedenen Lese- und Schreib-DB-Servern verwenden

Meine Fragen sind:

  1. Muss ich verschiedene Datenmodelle für die beiden Umgebungen erzeugen müssen?

  2. Kann ich dasselbe Datenmodell wiederverwenden?

  3. Ist etwas in EF selbst eingebaut, das dies ermöglichen wird?

Dank

+0

Ich nehme an, der Schreibserver sollte auch lesen, oder schreibst du immer nur neue Daten? Wie auch immer, EF wäre eine gute Wahl, wenn es sich um CRUD-Operationen handelt. Die beste Wahl für das Lesen hängt stark von allen Arten von Details ab. Wie: Gibt es verschiedene Datenbanken (verschiedene Schemata), welche Ebenen gibt es? –

Antwort

0

Sie können das gleiche Modell wieder verwenden, weil Sie eine Object mit jeder Verbindungszeichenfolge instanziiert, die Sie mögen. AFAIK können Sie die Verbindung später sogar ausschalten, so dass Sie zwei verschiedene Serververbindungen mit demselben EntityContext verwenden können.

0
  1. Wenn die Datenmodelle identisch sind, dann Nein.
  2. Du zu # 1 ist nein, # 2 ist automatisch ja.
  3. EF erfordert nur Sie es eine andere Verbindungszeichenfolge übergeben

jedoch ...

Ich bin nicht wirklich sicher, wie Sie diese Arbeit machen wollen. Sie werden praktisch einen ORM-Vorteil verlieren, Sie können keine Änderungsverfolgung durchführen, und Sie werden viele Probleme haben, wenn Sie nicht vom Schreibmodell lesen.

Ehrlich gesagt bin ich nicht sicher, wie Sie das mit jedem ORM funktionieren könnte.

+0

Vielleicht ist ein ORM nicht die richtige Lösung für das Problem. Das ist eines der Dinge, die ich zu bestimmen versuche. Da es einen Schreibserver und mehrere Lese-Server gibt, könnte es für mich sinnvoller sein, entweder EntLib zu verwenden oder nur meine eigene Datenzugriffsschicht zu rollen. Ich schaue auf EF, um zu sehen, ob ich vermeiden kann, einen REST-Dienst zu schreiben, und einfach OData über den EF-Code zu verwenden, um die für den Webclient benötigten Operationen verfügbar zu machen. danke für die Eingabe und Antworten. – marcs