【问题标题】:How to get List of all tables in the Entity data framework?如何获取实体数据框架中所有表的列表?
【发布时间】:2011-06-01 06:11:13
【问题描述】:

我需要获取实体数据框架中所有表的列表。

我知道在 Linq2SQL 中我们可以使用这样的东西。 var dataContext = new DataContext(); var dataContextTableNames =(来自 dataContext.Mapping.GetTables() 中的表 选择表.TableName).ToList();

但是,我需要获取实体数据框架中所有表的列表。有任何解决方法可以在实体数据框架中获取类似列表。

提前致谢。

【问题讨论】:

    标签: entity-framework entity-framework-4 edmx


    【解决方案1】:

    [编辑]

    也许这可以用于查找存储空间中的对象数量

       var count = GetEntitySetCount(myObjectContext.MetadataWorkspace);
    
       public static int GetEntitySetCount(MetadataWorkspace workspace)
       {
            var count = 0;
    
            // Get a collection of the entity containers from storage space.
            var containers = workspace.GetItems<EntityContainer>(DataSpace.SSpace);
    
            foreach(var container in containers)
            {
                //Console.WriteLine("EntityContainer Name: {0} ",
                //                  container.Name);
    
                foreach(var baseSet in container.BaseEntitySets)
                {
                    if(baseSet is EntitySet)
                    {
                        count++;
    
                        //Console.WriteLine(
                        //    "  EntitySet Name: {0} , EntityType Name: {1} ",
                        //    baseSet.Name, baseSet.ElementType.FullName);
                    }
                }
            }
    
            return count;
        }
    

    要检索数据库中的表数,可以在 .Net 4.0 中执行以下操作

    myObjectContext.ExecuteStoreQuery<int>(
                    "SELECT COUNT(*) from information_schema.tables WHERE table_type = 'base table'");
    

    使用 .Net 3.5

    var connection = ((EntityConnection)myObjectContext.Connection).StoreConnection as SqlConnection;
    
    var cmd = new SqlCommand("SELECT COUNT(*) from information_schema.tables WHERE table_type = 'base table'", connection);
    
    connection.Open();
    
    var count = (int)cmd.ExecuteScalar();
    
    connection.Close();
    

    【讨论】:

    • 它从数据库中获取表的列表。我需要从模型中获取所有表的所有 lsit。
    • 除非您将数据库用于非 EF 相关内容,否则将计为 1(对于 EdmMetadata 表)
    • 问题是我更新了数据库,我从数据库中删除了一些表。但是,在我知道数据库和 EF 中的表数不相同之前,我不希望更新模型。所以,我现在需要知道如何计算 EF 中的表数。
    猜你喜欢
    • 1970-01-01
    • 2021-10-17
    • 2015-09-30
    • 2023-03-17
    • 1970-01-01
    • 2018-01-02
    • 2019-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多