【问题标题】: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。

【讨论】:

  • 那是一篇旧帖子。查看同一页面上的解决方案。它有效 - 至少对于简单的继承层次结构。并提供有关访问元数据 API 的更多信息的链接stackoverflow.com/a/18964974/150342
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-27
  • 2011-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-08
相关资源
最近更新 更多