【问题标题】:EntityFramework - How to get tables name from EdmxEntityFramework - 如何从 Edmx 获取表名
【发布时间】:2013-04-20 06:10:24
【问题描述】:
我正在使用 asp.net mvc3。
我有一个创建 ADO.NET 实体数据模型的 edmx。 (数据优先)
TestDb.Designer.cs
namespace Test.Web.DataModel
{
public partial class TestDbContext : ObjectContext
{
public ObjectSet<T_Members> T_Members { ... }
public ObjectSet<T_Documents> T_Documents { ... }
....
}
}
T_Members, T_Documents
我想得到这个表的列表。
如何从 EDMX 中获取表名列表?
【问题讨论】:
标签:
entity-framework
edmx
【解决方案1】:
回答我自己。
TestDbContext context = new TestDbContext();
var tableList = context.MetadataWorkspace.GetItems<EntityType>(System.Data.Metadata.Edm.DataSpace.CSpace);
foreach (var item in tableList)
{
item.Name;
}
为有同样问题的人提供帮助...
【解决方案2】:
我认为您的“解决方案”仅在表和实体具有相同名称时才有效。
如果您将实体重命名为 Document(不带前缀),它将失败。
引用微软employee:
不,很遗憾,使用元数据 API 无法访问
给定实体的表名。这是因为映射元数据
是不公开的,所以没有办法从 C-Space 到 S-Space 使用
EF 的 API。