1

LINQを使い始めました。結合クエリを使用するには、結合する2つ以上のテーブルの混合値を含むreturnクラスを手動で作成する必要があります。

私の質問は、それらの結合クラスを自動的に作成するのに役立つツールについて誰かが知っているかどうかです。テーブルが大きすぎるときに手作業で行うのは大変な作業であり、メンテナンス用のポーポスにとっても非常に面倒だと思います。

前もって感謝します。

編集:強力なデータ型クラスを使用できる必要があるため、VSではインテリセンスです。LINQクエリ自体に問題はなく、返される結合クラスのみに問題があります。私は「DataSetsの世界」から来ました。ここでは、結合クエリによって対応するDataTableが自動的に作成されます。

ここでASP.NETMVCを使用しているので、メソッドはIEnumerable <>型を返します。これは、後でモデルオブジェクトとしてビューに渡されます。例:

public IEnumerable<MyJoinClass> GetData(int clientID)
{      
    var query =
    from t1 in objDataContext.table1
    join t2 in objDataContext.table2 on
    new { t1.clientID } equals new { t2.clientID }
    where t1.clientID == clientID
    select new MyJoinClass()
    {   
        //here the fields I want to retrieve... 
        column1_From_Table1 = t1.column1, 
        column2_From_Table1 = t1.column2, 
        //etc...
    };

    //Return result   
    return query;
}

public class MyJoinClass
{        
    public short column1_From_Table1;
    public string column2_From_Table1;
    public short? column3_From_Table1;
    public int column1_From_Table2;
    public short? column2_From_Table2;
    public string column3_From_Table2;
    //lets imagine 50 columns... do I need to do all this stuff on my own?
}
4

3 に答える 3

1

書く理由がほとんどないので、そのようなツールAFAIKはありません。本当に常に結合されたテーブルからすべてのフィールドを返したいですか?ありそうもない。

おそらく実行しているのは、レコードをフィルターで除外し、リンクされたテーブルに制約を追加するための内部結合です。DBからすべての列を取得することは、おそらくリソースの浪費です。

コードで手動で結合を行う場合は、いつでもDBでビューを作成し、代わりにクエリを実行できます。

于 2012-07-18T13:55:42.650 に答える
1

それは「コンパイラ」と呼ばれています。正式なクラス定義を必要とせずに、匿名型を使用できるようになります。

于 2012-07-18T13:57:45.320 に答える
1

Linqerを使用する

このツールを使用すると、実際にSQLを記述でき、ツールはそれをLINQ構造に変換します。

于 2012-07-18T13:59:18.583 に答える