Ich baue eine WPF-Anwendung mit dem MVVM-Muster. Unser Stapel sieht wie folgt aus:Entity Framework + POCO
SQL Server 2008 -> Entity Framework
Wir verwenden StructureMap für Dependency Injection unsere Datafactory zu injizieren, die im Wesentlichen funktioniert die CRUD für unsere POCO-Business-Objekten.
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 etwas ärgerlich finde, ist in der Datenfabrik. Wir kopieren jede Eigenschaft aus dem EF-Objekt in die POCO-Datei bei Auswahl und umgekehrt bei Aktualisierung/Einfügung.
Gibt es eine Möglichkeit, diesen Prozess zu automatisieren, wie es Fluent für NHibernate tut, aber mit dem Entity Framework?
Hier ist ein Beispiel insert-Methode in der Daten Fabrik ist:
public void InsertCustomer(ref Manager.Model.Customer businessObject)
{
var mgr = new Manager.Data.PersonData.PersonContext();
var person = new Manager.Data.PersonData.Person();
var customer = new Manager.Data.PersonData.Customer();
customer.Comments = businessObject.Comments;
customer.Company = businessObject.Company;
customer.IsBusiness = businessObject.IsBusiness;
customer.IsCompleted = businessObject.IsCompleted;
customer.ModifiedBy = "someone";
customer.ModifiedOn = DateTime.Now;
customer.CreatedBy = "someone";
customer.CreatedOn = DateTime.Now;
person.Customer.Add(customer);
person.FirstName = businessObject.FirstName;
person.LastName = businessObject.LastName;
person.Birthday = businessObject.Birthday;
person.CreatedBy = "someone";
person.CreatedOn = DateTime.Now;
person.Gender = businessObject.Gender;
person.MiddleInitial = businessObject.MiddleInitial;
person.ModifiedBy = "someone";
person.ModifiedOn = DateTime.Now;
person.Nickname = businessObject.Nickname;
person.Picture = "";
person.Suffix = businessObject.Suffix;
person.Title = businessObject.Title;
mgr.AddToPeople(person);
mgr.SaveChanges();
}
Es wäre schön, etwas Klasse zu erklären, wie Fluent es tut:
public class CatMap : ClassMap<Cat>
{
public CatMap()
{
Id(x => x.Id);
Map(x => x.Name)
.WithLengthOf(16)
.Not.Nullable();
Map(x => x.Sex);
References(x => x.Mate);
HasMany(x => x.Kittens);
}
}
meine insert-Methode würde schließlich aussehen dies:
Im Wesentlichen würde ich den Code zum Verschieben von Daten aus dem Geschäft Obj beseitigen Dies würde einmal in der Mapping-Klasse geschehen und müsste nicht für jede Methode wiederholt werden.
Danke!
Einige Code bitte? – chakrit