2013-04-26 77 views
1

我正在使用asp.net mvc3。EntityFramework - 如何从Edmx获取表名称

我有一个创建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获取表名列表?

+0

类似的:http://stackoverflow.com/q/1895455/150342 – Colin 2013-12-24 09:48:46

回答

1

回答我自己。

TestDbContext context = new TestDbContext(); 
var tableList = context.MetadataWorkspace.GetItems<EntityType>(System.Data.Metadata.Edm.DataSpace.CSpace); 
foreach (var item in tableList) 
{ 
    item.Name; 
} 

成为谁也有同样问题的人的帮助......

+0

绝对最简单的方法来做到这一点。好样的! – Kristopher 2013-10-16 21:33:59

0

我觉得你的“解决方案”只有当表与实体同名作品。 如果您要将您的实体重命名为Document(不带前缀),则会失败。

报价从微软employee

没有呢,可惜这是不可能使用元数据API去 对于给定的实体的表名。这是因为映射元数据 未公开,因此无法使用EF的API从C-Space转到S-Space。

+1

这是一个旧帖子。看看同一页面上的解决方案。它的工作 - 至少为一个简单的继承层次。并链接到访问MetaData API http://stackoverflow.com/a/18964974/150342的更多信息 – Colin 2013-12-24 09:45:01