1

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

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

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

提前致谢。

4

1 回答 1

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();
于 2010-12-30T13:58:39.243 回答