Entity framework EntityFramework-如何从Edmx获取表名

Entity framework EntityFramework-如何从Edmx获取表名,entity-framework,edmx,Entity Framework,Edmx,我正在使用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&l

我正在使用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 { ... }
         ....
    }
}
namespace Test.Web.DataModel
{
公共部分类TestDbContext:ObjectContext
{
公共对象集T_成员{…}
公共对象集T_文档{…}
....
}
}
小组成员,小组文件回答我自己

TestDbContext context = new TestDbContext();
var tableList = context.MetadataWorkspace.GetItems<EntityType>(System.Data.Metadata.Edm.DataSpace.CSpace);
foreach (var item in tableList)
{
    item.Name;
}
TestDbContext context=newtestdbcontext();
var tableList=context.MetadataWorkspace.GetItems(System.Data.Metadata.Edm.DataSpace.CSpace);
foreach(表列表中的变量项)
{
项目名称;
}
帮助有同样问题的人…

回答我自己

TestDbContext context = new TestDbContext();
var tableList = context.MetadataWorkspace.GetItems<EntityType>(System.Data.Metadata.Edm.DataSpace.CSpace);
foreach (var item in tableList)
{
    item.Name;
}
TestDbContext context=newtestdbcontext();
var tableList=context.MetadataWorkspace.GetItems(System.Data.Metadata.Edm.DataSpace.CSpace);
foreach(表列表中的变量项)
{
项目名称;
}

为了帮助有相同问题的人…

我认为您的“解决方案”只有在表和实体具有相同名称时才有效。 如果将实体重命名为Document(不带前缀),则将失败

引自微软:

不,不幸的是,使用元数据API无法访问 给定实体的表名。这是因为映射元数据 不是公共的,所以没有办法使用 EF的API


我认为您的“解决方案”只有在表和实体具有相同名称时才有效。 如果将实体重命名为Document(不带前缀),则将失败

引自微软:

不,不幸的是,使用元数据API无法访问 给定实体的表名。这是因为映射元数据 不是公共的,所以没有办法使用 EF的API


这绝对是最简单的方法。好极了!这绝对是最简单的方法。好极了!那是一个老帖子。请在同一页上查看解决方案。至少对于简单的继承层次结构来说,它是有效的。并链接到更多关于访问元数据API的信息,这是一篇老文章。请在同一页上查看解决方案。至少对于简单的继承层次结构来说,它是有效的。并提供了有关访问元数据API的更多信息的链接相似:相似: