मैं एमवीवीएम पैटर्न का उपयोग कर एक डब्ल्यूपीएफ एप्लीकेशन बना रहा हूं। हमारे ढेर इस तरह दिखता है:इकाई फ्रेमवर्क + पीओसीओ
एसक्यूएल सर्वर 2008 -> इकाई की रूपरेखा
हम निर्भरता इंजेक्शन के लिए StructureMap का उपयोग हमारे DataFactory जो अनिवार्य रूप से हमारे POCO व्यापार वस्तुओं के लिए CRUD करता इंजेक्षन करने के लिए।
व्यूमोडल्स सीआरयूडी के लिए डेटाफैक्टरी का उपयोग करते हैं और एक्सएएमएल पीओसीओ में गुणों के लिए डेटा बाध्य है।
पूरी चीज बहुत अच्छी तरह से काम करती है, लेकिन एकमात्र चीज जो मुझे कुछ परेशानी होती है वह डेटा फैक्ट्री में होती है। हम प्रत्येक संपत्ति को ईएफ ऑब्जेक्ट से पीओसीओ में चुनते हैं और अपडेट/डालने पर रिवर्स कॉपी करते हैं।
क्या इस प्रक्रिया को स्वचालित करने का कोई तरीका है जैसे Fluent NHibernate के लिए करता है लेकिन इकाई फ्रेमवर्क के साथ करता है?
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();
}
यह कुछ वर्ग घोषित करने के लिए सुविज्ञ यह होता है की तरह अच्छा होगा:
यहाँ डेटा कारखाने में एक नमूना डालने विधि है
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);
}
}
अंत में मेरी डालने विधि कैसा लगेगा यह:
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();
Something.Map(person, businessObject);
Something.Map(customer, businessObject);
person.Customer.Add(customer);
mgr.AddToPeople(newCustomer);
mgr.SaveChanges();
}
अनिवार्य रूप से मैं व्यापार obj से डेटा स्थानांतरित करने के लिए कोड को खत्म कर दूंगा इकाई फ्रेम कार्य ऑब्जेक्ट के लिए ect यह मैपिंग कक्षा में एक बार किया जाएगा और प्रत्येक विधि के लिए दोहराना नहीं होगा।
धन्यवाद!
कुछ कोड कृपया? – chakrit