entity-framework - Entity Framework - 获取表列表

标签 entity-framework

就是这样。这很简单。我有一个 edmx 并且希望能够动态地查询它以获取表,并且(希望)动态地针对该表进行构建。那可能吗?

=========

更新:

我在上下文中包含了所有数据库表,但没有 View 或 SP。我们有很多类型信息(带有 id)的表。因此,例如,颜色或文件类型或协议(protocol)类型。我希望能够对可能包含类型信息(文件、文件类型)的表进行类型(文件)查询,并用 id 返回它。

因此,我可能会寻找...业务单位(或颜色或文件),代码将开始搜索业务单位(或颜色或文件)和业务单位类型(或颜色类型或文件类型)的上下文。如果找到任何一个,它将查询它并返回所有行,以便我可以查看它是否包含类型信息(稍后我将对其进行细化以仅返回 ID 和描述、缩写或名称字段以及限制行等)并能够找到特定任何东西的关联 ID。

最佳答案

此示例代码来自帖子 What Tables Are In My EF Model? And My Database?

using (var dbContext = new YourDbContext())
{
    var metadata = ((IObjectContextAdapter)dbContext).ObjectContext.MetadataWorkspace;

    var tables = metadata.GetItemCollection(DataSpace.SSpace)
        .GetItems<EntityContainer>()
        .Single()
        .BaseEntitySets
        .OfType<EntitySet>()
        .Where(s => !s.MetadataProperties.Contains("Type")
        || s.MetadataProperties["Type"].ToString() == "Tables");

    foreach (var table in tables)
    {
        var tableName = table.MetadataProperties.Contains("Table")
            && table.MetadataProperties["Table"].Value != null
            ? table.MetadataProperties["Table"].Value.ToString()
            : table.Name;

        var tableSchema = table.MetadataProperties["Schema"].Value.ToString();

        Console.WriteLine(tableSchema + "." + tableName);
    }
}

关于entity-framework - Entity Framework - 获取表列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3892926/

相关文章:

c# - 在以下情况下使用指令和 SQLite 有什么问题?我得到了 ObjectDisposedException,但就在这里?

.net - 将 Entity Framework 4.0 与 WCF 4.0 结合使用时出现 DataContractSerializer 错误

c# - 单个实体类型是否可以有多个 Controller ?

asp.net 核心身份声明与属性(效率观点)

.Net Entity Framework 的 PHP 等价物

C# 单元测试异步错误

entity-framework - EF v-Next 是否支持一对一外键关联?

c# 将 DbContextTransaction 转换为 SqlTransaction

c# - DbSet.ToList() 播种其他 dbset

c# - Entity Framework 异步问题上下文或查询?