7

के साथ प्राथमिक कुंजी मान कैसे प्राप्त करें हम वर्तमान में नीचे दी गई विधि का उपयोग कर रहे हैं जो एक अमूर्त रिपोजिटरी में IObjectContextAdapter पर निर्भर करता है। जो मैं पढ़ रहा हूं, उससे ऐसा लगता है कि ऑब्जेक्ट कॉन्टेक्स्ट से संबंधित कुछ भी एंटिटी फ्रेमवर्क कोर से बाहर निकाला जा रहा है। नीचे दी गई विधि एकमात्र जगह है जिसे हम ऑब्जेक्ट कॉन्टेक्स्ट से संबंधित किसी भी चीज़ पर निर्भर करते हैं।एंटिटी फ्रेमवर्क कोर

हम इकाई फ्रेमवर्क कोर में अपग्रेड करना चाहते हैं। यह हमारा एकमात्र सड़क ब्लॉक है। क्या इकाई फ्रेमवर्क कोर एपीआईएस के साथ किसी इकाई की प्राथमिक कुंजी का मूल्य प्राप्त करने का कोई तरीका है?

// Entity Framework 
public virtual int GetKey(T entity) 
{ 
    var oContext = ((IObjectContextAdapter)_DbContext).ObjectContext; 
    var oSet = oContext.CreateObjectSet<T>(); 
    var keyName = oSet.EntitySet.ElementType 
           .KeyMembers 
           .Select(k => k.Name) 
           .Single(); 

    return (int)entity.GetType().GetProperty(keyName).GetValue(entity, null); 
} 

उत्तर

12

मैं भी इसी तरह की समस्या का सामना करना पड़ और निम्नलिखित समाधान इस उत्तर के लिए

// Entity Framework Core 
public virtual int GetKey<T>(T entity) 
{ 
    var keyName = Context.Model.FindEntityType(typeof (T)).FindPrimaryKey().Properties 
     .Select(x => x.Name).Single(); 

    return (int)entity.GetType().GetProperty(keyName).GetValue(entity, null); 
} 
+0

धन्यवाद पाया। ऐसा लगता है कि यह काम करना चाहिए। मैं फिलहाल उस परियोजना पर नहीं हूं, लेकिन मैं निकट भविष्य में इस पर वापस आने की उम्मीद करता हूं। जितनी जल्दी हो सके मैं कोशिश करूँगा। – cResults

+0

संदर्भ है। मॉडल EF7 में जोड़ा गया है? मैं एक ईएफ 6 पर्यावरण में परिवर्तन की कोशिश कर रहा हूं, लेकिन तोड़ रहा हूं क्योंकि वह संपत्ति मौजूद नहीं है। – cResults

+0

हां, यह ईएफ 7 (कोर) संपत्ति – YuriyP

संबंधित मुद्दे