1

TestMethodデータコンテキスト内のテーブルを列挙し、各テーブルから1つのレコードを読み取ろうとするを作成しようとしています。テストの目的は、.dbmlファイルが基盤となるデータベースと同期していることを確認することです。私がこれまでに持っているもの:

[TestMethod]
public void TestDataContextTables()
{
    using ( MyDataContext dataContext = new MyDataContext() )
    {
        int count = 0;
        IEnumerable<MetaTable> tableList = dataContext.Mapping.GetTables();

        foreach ( MetaTable table in tableList )
        {
            Debug.Print( "Testing " + table.TableName + "..." );

            // method to restore >= 1 record using LINQ...
            //Object dummy = from t in dataContext.Mapping.GetTables().Skip( count ).Take( 1 ) select t;  <-- wrong (1)
            //Object dummy = from t in dataContext.Mapping.GetTable( table.RowType.GetType() ) select t; <-- also wrong (2)
            //Object dummy = from t in dataContext.Mapping.GetTable( table.RowType.GetType() ).GetType() select t; <-- also wrong (3)

            Debug.Print( "OK\n" );
            count++;
        }
    }
}

LINQステートメント(1)は、実際のデータを読み取っていないようです。LINQステートメント(2)は、コンパイル時エラー「ソースタイプ'MetaTable'のクエリパターンの実装が見つかりませんでした」を示し、(3)エラー「ソースタイプのクエリパターンの実装が見つかりませんでした」を示します。 'システムタイプ'"。後者の2つは、何かを参照する必要があるときに、メタ何かを参照していることを示しています

私が探しているのはDataContext、LINQステートメントで各テーブルを参照し、各レコードから行を返して、SELECTそのLINQが基になるデータベースでジャイブを生成するようにする方法です。

4

1 に答える 1

0

LINQを使用してテーブル名を列挙しselect name from sys.tables、SqlQueryを使用することができます(EFを使用していると仮定します)。

var result = db.Database.SqlQuery("select * from " + yourTableName).ToList();
于 2012-12-27T21:00:59.627 に答える