【问题标题】:how to get a list of all entities in EF 5?如何获取 EF 5 中所有实体的列表?
【发布时间】:2017-11-03 23:09:22
【问题描述】:

我正在构建一个 MVC 4 应用程序。我的视图有一个下拉列表,需要显示所有使用的表(实体)..

我该怎么做?我首先在配置中使用 EF 5 代码。

任何帮助将不胜感激。

谢谢

【问题讨论】:

标签: c# asp.net-mvc-4 entity-framework-5


【解决方案1】:

此代码将为您获取它们,当然,那些已导入您的 EDM 的代码不一定是您数据存储中的所有表。

var tableNames = context.MetadataWorkspace.GetItems(DataSpace.SSpace)
                        .Select(t => t.Name)
                        .ToList();

代码优先:

using System.Data.Metadata.Edm;
using System.Data.Objects;
using System.Data.Entity.Infrastructure;

...

using (dbcontext context = new TestContext())
{
   ObjectContext objContext = ((IObjectContextAdapter)context).ObjectContext;
   MetadataWorkspace workspace = objContext.MetadataWorkspace;
   IEnumerable<EntityType> tables = workspace.GetItems<EntityType>(DataSpace.SSpace);

}

【讨论】:

  • 在我的上下文中没有 MetadataWorkspace 这样的东西
  • Radenko - 我能再问你一个问题吗,我已经为一些名为 DoNotAudit 的实体添加了一个自定义属性。如何只获取没有属性的表列表?
【解决方案2】:

这对我在 EF 6 上非常有效

        public List<string> EntityNames()
        {
            ObjectContext objContext = ((IObjectContextAdapter)myDbContext).ObjectContext;
            MetadataWorkspace workspace = objContext.MetadataWorkspace;
            IEnumerable<EntityType> tables = workspace.GetItems<EntityType>(DataSpace.SSpace);

            List<string> lst = new List<string>();
            foreach (var table in tables)
            {
                var entityName = table.FullName.Replace("CodeFirstDatabaseSchema.", "");
                lst.Add($"{entityName}");
            }

            return lst;
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    • 2020-09-12
    • 2021-10-17
    • 2020-01-04
    • 1970-01-01
    • 1970-01-01
    • 2016-02-01
    相关资源
    最近更新 更多