我正在尝试获取实体的 SQL 表名。当我使用 MetadataWorkspace 查询时,我会从对象或存储空间中获得大量信息。但是模式名称和表名称不存在。
我尝试查询 CSpace 和 SSpace 的所有 EntityType 对象,我可以看到两者都正确列出,但我不知道如何从 CSpace 获取 SSpace。
所以说我在对象模型中有一个名为 User 的类型 - 我如何在数据库中找到具有模式名称 (tkp.User) 的表名?
有没有办法做到这一点?
我正在尝试获取实体的 SQL 表名。当我使用 MetadataWorkspace 查询时,我会从对象或存储空间中获得大量信息。但是模式名称和表名称不存在。
我尝试查询 CSpace 和 SSpace 的所有 EntityType 对象,我可以看到两者都正确列出,但我不知道如何从 CSpace 获取 SSpace。
所以说我在对象模型中有一个名为 User 的类型 - 我如何在数据库中找到具有模式名称 (tkp.User) 的表名?
有没有办法做到这一点?
没有perfect
答案,但这应该工作......
var ssSpaceSet = objectContext.MetadataWorkspace
.GetItems<EntityContainer>(DataSpace.SSpace).First()
.BaseEntitySets
.First(meta => meta.ElementType.Name == "YourEntityName");
如果您在调试器中查找,Table
属性应该具有真实的表名。
你需要
reflection
在最后一部分使用。
好消息是它也应该透明地与 EF6 一起使用(因为它具有类似的基类)
(类似 for schema
,也应该在其中 - 这是space
用于 Db/SQL 映射名称、构面等)
请参阅我的这篇文章以及许多详细信息
获取模型模式以使用不支持 CreateDatabase 的提供程序以编程方式创建数据库