2012-11-19 11 views
5

से डीबीसीएन्टेक्स्ट रूपांतरण मैं इस फ़ंक्शन का उपयोग EntityFramework 4.0 (ऑब्जेक्ट कॉन्टेक्स्ट) में कर रहा हूं। अब मैं ईएफ 5.0 का उपयोग कर रहा हूँ। मेरी समस्या DefaultContainerName है, GetObjectByKey तरीकों DBContextऑब्जेक्ट कॉन्टेक्स्ट

public static T GetObjectByID<T>(int ID, string tableName = "") 
     { 
      var localDB = new LocalBaseEntities(); 

      string entitySetName = string.Format("{0}.{1}", localDB.DefaultContainerName, string.IsNullOrEmpty(tableName) ? typeof(T).Name + "s" : tableName); 

      try 
      { 
       IEnumerable<KeyValuePair<string, object>> entityKeyValues = 
       new KeyValuePair<string, object>[] { new KeyValuePair<string, object>(typeof(T).Name + "ID", ID) }; 
       EntityKey key = new System.Data.EntityKey(entitySetName, entityKeyValues);    
       return (T)localDB.GetObjectByKey(key); 
      } 
      catch (Exception) 
      { }    

      return default(T); 
     } 

कैसे इस समारोह में परिवर्तित करने में नहीं मिला?

या इस तरह कार्य कैसे करें?

उत्तर

15

DbContextObjectContext से अधिक एडाप्टर (रैपर) है। इसके अलावा यह स्पष्ट रूप से इंटरफ़ेस IObjectContextAdapter लागू करता है। कास्ट आप इस इंटरफ़ेस प्रकार के dbContext और लिपटे ObjectContext उदाहरण उपलब्ध हो जाएगा:

ObjectContext context = ((IObjectContextAdapter)dbContext).ObjectContext; 

BTW नया वर्ग DbSet<T> विधि Find जो भी कुंजी द्वारा संस्थाओं खोज है। तो, ऐसा लगता है कि अब आपका सभी कोड

T entity = dbContext.Set<T>().Find(id); 
+1

जैसा दिखता है। जवाब दो – ebattulga

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