gpt4 book ai didi

c# - 从 DbEntityEntry 获取表名(代码优先)

转载 作者:行者123 更新时间:2023-11-30 18:55:10 26 4
gpt4 key购买 nike

简单:如何从 DbEntityEntry 对象中获取映射的表名?我在一个扩展 DbContext 的类中。我看过 ObjectContext 的示例,但不适用于 CF。

谢谢。

最佳答案

如另一个答案所述,可以使用 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;
}

上面的代码还测试了代理。希望这对访问此链接的其他人有所帮助,因为我认为原始海报很久以前就解决了这个问题。

关于c# - 从 DbEntityEntry 获取表名(代码优先),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6600254/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com