Lui*_*lar 2 c# entity-framework ef-code-first
简单:如何从DbEntityEntry对象获取映射表名?我在一个扩展DbContext的类中.我见过ObjectContext的例子,但不适用于CF.
谢谢.
小智 10
如另一个答案所述,可以使用IObjectContextAdapter获取表名
private string GetTableName(DbEntityEntry ent)
{
ObjectContext objectContext = ((IObjectContextAdapter) this).ObjectContext;
Type entityType = ent.Entity.GetType();
if (entityType.BaseType != null && entityType.Namespace == "System.Data.Entity.DynamicProxies")
entityType = entityType.BaseType;
string entityTypeName = entityType.Name;
EntityContainer container =
objectContext.MetadataWorkspace.GetEntityContainer(objectContext.DefaultContainerName, DataSpace.CSpace);
string entitySetName = (from meta in container.BaseEntitySets
where meta.ElementType.Name == entityTypeName
select meta.Name).First();
return entitySetName;
}
Run Code Online (Sandbox Code Playgroud)
上面的代码也测试代理.希望这可以帮助其他人来到这个链接,因为我认为原始海报很久以前解决了这个问题.
我在msdn找到了一个更清洁的方法来摆脱代理名称.
private string GetTableName(DbEntityEntry ent)
{
return ObjectContext.GetObjectType(entry.Entity.GetType()).Name;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6921 次 |
| 最近记录: |