2009-08-28 2 views
0

テーブルtab1、tab2という2つのテーブルがあるとします。 EFはedmxファイルを作成し、2つのエンティティが作成されます。EntityフレームワークでLinqを使用するには?

次に、tab1にコンピュータメンバーを追加して、count、sumなどのtab2から何らかの結果を得たいとします。私が使用して部分クラスである:

public partial class tab1{ 
    public int Count{ 
     get{ 
      int cnt; 
      //... 
      return cnt; 
     } 
    } 
    public int Total{ 
     get{ 
      int total; 
      //the matching sql like select sum(column) from tab2 
      return total; 
     } 
    } 
} 

私はCNTしたい(そのSQLはTAB2からのカウント(1)を選択する必要があります)TAB2にカウントされます。または、別の表から計算された合計。 しかし、それを実装する方法は? datacontextのようなものはまだありません。

答えて

2

はい、あり - のObjectContextを使用します!それはEntity Frameworkのすべてのものへの入り口です

EDMXを作成したときに名前を付けました。これはEntity Framework接続文字列に使用されているのと同じ名前です。これは "mymodel.designer.cs" EDMXモデルの分離コードファイル、

using(MyModelContext ctx = new MyModelContext()) 
{ 
    tab1 newTab = new tab1(); 
    // set the properties as you wish 

    ctx.AddTotab1(newTab); 
    ctx.SaveChanges(); 
} 

あなたの「TAB1」と「TAB2」エンティティが1にリンクされている場合:nはファッション(1「tab1のは、」複数の「TAB2」のエントリを持つことができます)、あなたは」 "tab2Entities"というタイプの "tab1"のメンバーを見つけるでしょう。

ここで、与えられた "tab2"エントリの数を計算したいのであれば"tab1"オブジェクトは、次のコードを使用してください:

if(!tab2Entities.IsLoaded()) 
    tab2Entities.Load(); 

int count = tab2Entities.Count; 

これだけです。 :-)

マーク

0

これらの種類のプロパティを自分で作成している場合は、エンティティフレームワークのナビゲーションプロパティと関連付けのマッピングを作成していないように思えます。

tab1とtab2の間のデータベースに外部キーを追加してみてください(関連性はありますが)。その後、edmxファイルをワイプしてもう一度インポートしてください。エンティティフレームワークデザイナのtab1とtab2の間に関連があることがわかります。

そのあとのようなもの呼び出すことができます。

myTab1.Tab2s.Count(); 

を助けうまくいけば - ローレンヴァンSpronsen

+0

ありがとうございます。しかし、私は一般的に計算メンバーを探しています。私は例としてカウントを取った。別の例としては、他のテーブルのいくつかの列の合計かもしれません。おそらくtab1との適切な関連付けは、外部キーなどの識別情報である可能性があります。 – KentZhou

+0

tab1とtab2の間に関係はありますか? そうでなければ、なぜこれらのプロパティをtab1に入れようとしていますか? その場合、tab1でこれらの値を計算できるはずです。 Sumの例では、(this.Tab2sのtからt.Valueを選択します。).Sum() – LorenVS