मैं पहली विधि यहाँ निर्धारित निम्नलिखित एफई कोड का उपयोग कर एक 1 से 1 संबंध की स्थापना की है:अपवाद के कारण 1-से-1 संबंध: एसोसिएशनसेट 'हटाए गए' राज्य में है। यह देखते हुए बहुलता की कमी
Unidirectional One-To-One relationship in Entity Framework
मेरे मानचित्रण इस तरह दिखता है ...
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Asset>()
.HasRequired(i => i.NewsItem)
.WithOptional(e => e.Asset)
.Map(m => m.MapKey("NewsItemId"));
}
लेकिन जब मुझे यह अपवाद मिलता है ...
'Asset_NewsItem' एसोसिएशनसेट से संबंध 'हटाए गए' राज्य में है। बहुगुणित बाधाओं को देखते हुए, संबंधित 'Asset_NewsItem_Source' को 'हटाए गए' राज्य में भी होना चाहिए।
जब भी इस कोड को चलाता है:
var entry = _db.NewsItems.Find(id);
entry.Asset = new Asset();
_db.DbContext.SaveChanges();
मैं चीजों को काम करने के लिए अगर मैं स्पष्ट रूप से हटाने के लिए पिछले NewsItem से जुड़े एसेट निशान प्राप्त कर सकते हैं, लेकिन यह सिर्फ थोड़े wonky लगता है। मैपिंग के आधार पर ऐसा लगता है, उपर्युक्त कोड बस काम करना चाहिए ... पुरानी संपत्ति को नए के साथ बदलना।
क्या मैं कुछ गलत कर रहा हूं? क्या मैपिंग में मुझे कुछ निर्दिष्ट करने की ज़रूरत है जो चीजों को सही तरीके से काम करेगी? या, क्या यह केवल ईएफ तरीका हटाना है और फिर इस तरह की संबंधित वस्तुओं को जोड़ना है?
बहुत ओआरएम नहीं लगता है लेकिन मैं समझता हूं कि आप क्या कह रहे हैं। क्या रिश्ते को मैप करने का कोई बेहतर तरीका है जो नई संपत्ति को बस सेट करने की अनुमति देगा? या हां, मैपिंग सही है और मुझे बस इससे निपटने की ज़रूरत है: :) धन्यवाद। – wgpubs
मैं बस एक ही चीज़ में भाग गया। अधिक निराश। मेरा मानना है कि NHibernate इसे संभालता है जैसे इसे संभाला जाना चाहिए। –
@ माइककोल: और इसे कैसे संभाला जाना चाहिए? –