I’m use this function in EntityFramework 4.0 (ObjectContext). Now i’m using EF 5.0. My problem is DefaultContainerName,GetObjectByKey methods not found in 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);
}
How to convert this function?
Or how to make function like this?
DbContextis an adapter (wrapper) overObjectContext. Also it implements explicitly interfaceIObjectContextAdapter. Cast you dbContext to this interface type and wrappedObjectContextinstance will be available:BTW new class
DbSet<T>has methodFindwhich also searches entities by key. So, it seems all your code now will look like