eba*_*lga 5 c# entity-framework .net-4.5 entity-framework-5
我在EntityFramework 4.0(ObjectContext)中使用此函数.现在我正在使用EF 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);
}
Run Code Online (Sandbox Code Playgroud)
如何转换这个功能?
或者如何制作这样的功能?
Ser*_*kiy 15
DbContext是一个适配器(包装)结束ObjectContext.它还实现了显式接口IObjectContextAdapter.将dbContext转换为此接口类型,并且包装的ObjectContext实例将可用:
ObjectContext context = ((IObjectContextAdapter)dbContext).ObjectContext;
Run Code Online (Sandbox Code Playgroud)
BTW新类DbSet<T>还有Find按键搜索实体的方法.所以,现在你的所有代码看起来都像
T entity = dbContext.Set<T>().Find(id);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7408 次 |
| 最近记录: |