के साथ एक समय में दो संबंधित इकाइयां कैसे बना सकता हूं तो कहें कि मेरे पास 2 इकाइयां हैं, Post
और PostHistory
। जब भी मैं कोई पोस्ट बना या संपादित करता हूं, तो मैं किसी पोस्ट में किए गए सभी परिवर्तनों को लॉग इन करने के लिए PostHistory
के रूप में इसकी एक सटीक प्रतिलिपि बनाना चाहता हूं। कहो पोस्ट इकाई निम्नलिखित परिभाषा है:मैं ईएफ 4 कोड-प्रथम
public class Post
{
public int Id { get; set; }
public string Text { get; set; }
public virtual ICollection<PostHistory> PostHistory{ get; set; }
}
समस्या आता है जब मैं अपनी पहली Post
पैदा करते हैं। उदाहरण के लिए, अगर मैं इस प्रयास करें:
Post post = new Post { Text = "Blah" };
context.Posts.Add(post);
PostHistory history = new PostHistory { Text = "Blah"};
context.PostHistory.Add(history);
post.PostHistory.Add(history);
ऐसा इसलिए है क्योंकि जब से post
और history
दोनों नए संस्थाएं हैं, इसलिए Post.PostHistory
के कारण यह अभी तक शुरू कर दिया गया नहीं होने रिक्त है असफल हो जायेगी। ऐसा करने का एकमात्र तरीका यह है कि पहले डीबी पर post
प्रतिबद्ध करें, फिर डेटाबेस में history
प्रतिबद्ध करें, लेकिन मुझे नहीं पता कि इसके लिए 2 अलग-अलग आवेषण क्यों आवश्यक हैं।
अगर मैं एक निर्माता ICollection
करने के लिए एक List<T>
सब कुछ ठीक काम करता है, लेकिन अन्य मुद्दों List<T>
कारणों से कार्यान्वयन के लिए मजबूर है, और लगभग कोई कोड पहले ट्यूटोरियल इस मजबूर दीक्षा करना आरंभ करता है।
तो इस स्थिति को संभालने का सबसे अच्छा तरीका क्या है?
संग्रह के रूप में संग्रह को प्रारंभ करना काम करता है लेकिन यह एक अच्छा विकल्प नहीं है। इसका कारण यह है कि आप एक सूची को एक EntityCollection में परिवर्तित नहीं कर सकते हैं (इसलिए मैं जांच सकता हूं कि संग्रह उदाहरण के लिए उत्सुक हो गया है या नहीं)। –
KallDrexx
आप कैसे जांचते हैं कि संग्रह 'EntityCollection' के साथ उत्सुक है या नहीं? –
'EntityCollection' वर्ग में 'IsLoaded' प्रॉपर्टी –
KallDrexx