2

ここに興味深い質問があります。たとえば、Instrument と Currency など、関連するテーブルがデータベースにあるとします。Instrument テーブルには、Currency テーブルのエントリにマップされる currency_id フィールドがあります。Linqの土地では、より良い方法は何ですか:

a)DataContextでInstrumentおよびCurrencyエンティティを作成してから、関連付けを作成するか、単にLinqクエリでjoinを使用するか、

b) Instrument と Currency を結合するデータベースにビューを作成し (したがって currency_id を通貨コードに解決)、それを Linq コンテキストのエンティティとして使用しますか?

4

4 に答える 4

1

それらを独立して使用することはありますか?その場合、個別に使用されるエンティティごとにエンティティが必要になります。通貨を個別に使用することになると思います (商品を作成するときに通貨を選択できるドロップダウンなど)。そういうことなら、分けて関連付けた方が楽だと思います。

于 2009-01-05T19:04:45.653 に答える
0
  • Instrumentをロードし、後でCurrenciesプロパティを使用して関連する通貨をロードする場合、2つのクエリがあります。

  • 結合を使用してlinqクエリを発行すると、linqは結合を使用してそれをsqlに変換し、すべてのデータを一度に取得します。

  • DataLoadOptionsを設定すると、1つのクエリですべてのデータを取得できるため、結合を記述する必要はありません。

http://msdn.microsoft.com/en-us/library/system.data.linq.dataloadoptions.aspx http://msdn.microsoft.com/en-us/library/system.data.linq.dataloadoptions.loadwith .aspx

DataLoadOptions dlo = new DataLoadOptions();
dlo.LoadWith<Instrument>(i => i.Currencies)
myDataContext.LoadOptions = dlo;
于 2009-01-06T14:43:57.613 に答える
0

ORM がデータ アクセス ロジックを抽象化するようになったため、ビューの特定の機能は不要になりました。それはORMの機能の一部であるため、ORMに任せるのが最善です。

ただし、ビューは、ストアド プロシージャのコードを簡素化したり、便利なインデックスを作成したりする場合にも役立ちます。

于 2009-01-05T19:17:31.930 に答える