我正在尝试获取实体的SQL表名。 当我使用MetadataWorkspace查询时,我从对象或存储空间获取大量信息。但架构名称和表名称不存在。
我尝试查询CSpace和SSpace的所有EntityType对象,我可以看到两者都正确列出,但我无法弄清楚如何从CSpace获取SSpace。
所以说我在对象模型中有一个名为User的类型 - 如何在数据库中找到带有模式名称(tkp.User)的表名?
有没有办法做到这一点?
答案 0 :(得分:7)
此答案没有perfect
,但这应该有用......
var ssSpaceSet = objectContext.MetadataWorkspace
.GetItems<EntityContainer>(DataSpace.SSpace).First()
.BaseEntitySets
.First(meta => meta.ElementType.Name == "YourEntityName");
如果在调试器中查找,Table
属性应具有实际的表名。
您需要在最后一部分使用
reflection
好消息是它应该透明地与EF6一起使用 (因为它有类似的基类)
(它与schema
类似,也应该在那里 - 这是Db / SQL映射名称,facet等的space
。)
查看我的这篇文章有很多细节 Get Model schema to programmatically create database using a provider that doesn't support CreateDatabase
<小时/> Get Model schema to programmatically create database using a provider that doesn't support CreateDatabase