10

मैं पहली विधि यहाँ निर्धारित निम्नलिखित एफई कोड का उपयोग कर एक 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 लगता है। मैपिंग के आधार पर ऐसा लगता है, उपर्युक्त कोड बस काम करना चाहिए ... पुरानी संपत्ति को नए के साथ बदलना।

क्या मैं कुछ गलत कर रहा हूं? क्या मैपिंग में मुझे कुछ निर्दिष्ट करने की ज़रूरत है जो चीजों को सही तरीके से काम करेगी? या, क्या यह केवल ईएफ तरीका हटाना है और फिर इस तरह की संबंधित वस्तुओं को जोड़ना है?

उत्तर

7

ईएफ कैसे काम करता है। आपने संबंधित संपत्ति के साथ एक प्रविष्टि लोड की है और पता है कि आप एक नई संपत्ति असाइन करना चाहते हैं। यह ऑपरेशन आपकी पुरानी संपत्ति को किसी प्रविष्टि से असंबंधित कर देगा लेकिन आपके मैपिंग द्वारा इसकी अनुमति नहीं है (आपने निर्दिष्ट किया है कि Asset संबंधित Entry से संबंधित होना चाहिए)। इसलिए आपको पुरानी संपत्ति को हटाना होगा या अपनी मैपिंग बाधाओं को पूरा करने के लिए नई संपत्ति को असाइन करने से पहले इसे किसी अन्य प्रविष्टि में असाइन करना होगा।

+3

बहुत ओआरएम नहीं लगता है लेकिन मैं समझता हूं कि आप क्या कह रहे हैं। क्या रिश्ते को मैप करने का कोई बेहतर तरीका है जो नई संपत्ति को बस सेट करने की अनुमति देगा? या हां, मैपिंग सही है और मुझे बस इससे निपटने की ज़रूरत है: :) धन्यवाद। – wgpubs

+1

मैं बस एक ही चीज़ में भाग गया। अधिक निराश। मेरा मानना ​​है कि NHibernate इसे संभालता है जैसे इसे संभाला जाना चाहिए। –

+0

@ माइककोल: और इसे कैसे संभाला जाना चाहिए? –