从ObjectContext的DBContext转换

我在EntityFramework 4.0(ObjectContext)中使用这个函数。现在我使用EF 5.0。我的问题是DefaultContainerName,而不是在DBContext从ObjectContext的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);

}

如何这个函数转换发现GetObjectByKey的方法呢?

或者如何使这样的功能?

回答:

DbContext是一个超过ObjectContext的适配器(包装)。它也明确实现了接口IObjectContextAdapter。投你的DbContext这个接口类型和包装ObjectContext例如将可用:

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

BTW新类DbSet<T>有方法Find这也是关键的搜索实体。所以,现在看起来你所有的代码看起来都像

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

以上是 从ObjectContext的DBContext转换 的全部内容, 来源链接: utcz.com/qa/257844.html

回到顶部