Entity Framework + POCO

8

Ich erstelle eine WPF-Anwendung, die das MVVM-Muster verwendet. Unser Stack sieht so aus:

SQL Server 2008 - & gt; Entity Framework

Wir verwenden StructureMap für die Dependency-Injektion, um unsere DataFactory zu injizieren, die im Wesentlichen die CRUD für unsere POCO-Business-Objekte verwendet.

Die ViewModels verwenden die DataFactory für CRUD und die XAML sind Daten, die an die Eigenschaften in den POCOs gebunden sind.

Die ganze Sache funktioniert gut, aber das einzige, was ich als etwas ärgerlich empfinde, ist in der Datenfabrik. Wir kopieren jede Eigenschaft aus dem EF-Objekt in die POCO-Datei bei Auswahl und umgekehrt bei Aktualisierung / Einfügen.

Gibt es eine Möglichkeit, diesen Prozess zu automatisieren, wie es Fluent für NHibernate tut, aber mit dem Entity Framework?

Hier ist eine Beispieleinfügemethode in der Datenfactory:

%Vor%

Es wäre schön, eine Klasse zu deklarieren, wie Fluent es macht:

%Vor%

Schließlich würde meine Einfügemethode so aussehen:

%Vor%

Im Wesentlichen würde ich den Code eliminieren, um Daten aus dem Business-Objekt in das Entity-Frame-Arbeitsobjekt zu verschieben, das einmal in der Mapping-Klasse ausgeführt würde und nicht für jede Methode wiederholt werden müsste.

Danke!

    
Lukasz 23.04.2009, 20:50
quelle

2 Antworten

11

Sie können Automapper versuchen, funktioniert für mich.

Ссылка

    
mxmissile 01.05.2009, 19:43
quelle
1

Obwohl mir nicht bekannt ist, dass ein Datenmapper für EF funktioniert, ist es nicht schwer, einen zu schreiben. Auch, seit das Definieren der Zuordnungen die meiste Arbeit ist, ist es wirklich nicht schwieriger, als die fließenden Schnittstellenzuordnungen zu verwenden, die Sie aufgelistet haben. Sie erstellen lediglich eine Mapper-Klasse mit mehreren Kartenfunktionen, von denen jede Ihre Zuordnungslogik enthält.

Ein Gedanke, der interessant sein könnte, ist, Ihre Kartenfunktionen zu erweitern. Sie würden immer noch eine Mapper-Klasse erstellen, aber jede der Map-Methoden würde aussehen wie

%Vor%

Da die MapToPerson-Methode eine Erweiterungsmethode ist und nicht wirklich eine Methode für Ihre bizObject-Klasse, brechen Sie das POCO nicht. Aufgrund des syntaktischen Zuckers der Erweiterungsmethode könnte Ihre InsertCustomer-Methode jedoch folgenden Code haben:

%Vor%     
Rudy Lacovara 26.04.2009 06:05
quelle