1

エンティティデータフレームワークのすべてのテーブルのリストを取得する必要があります。

Linq2SQLではこのようなものを使用できることを私は知っています。var dataContext = new DataContext(); var dataContextTableNames =(dataContext.Mapping.GetTables()のテーブルからselect 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 に答える