1

我正在使用 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 获取表名列表?

4

2 回答 2

1

Answer Myself.

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

To be help for people who have the same problem ...

于 2013-04-29T01:06:52.507 回答
0

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

来自微软员工的报价:

不,不幸的是,使用元数据 API 来获取给定实体的表名是不可能的。这是因为映射元数据不是公开的,因此无法使用 EF 的 API 从 C-Space 转到 S-Space。

于 2013-12-24T09:35:50.910 回答