1

最初にエンティティ フレームワーク データベースを使用して、データベースのモデルを構築しています。この時点まで、私は単一のテーブル/エンティティで作業してきましたが、クエリを使用してデータを取得し、データを表示するためにリストに保存するのは非常にスムーズでした。

今、私はいくつかのテーブルに参加する必要があり、少し苦労している状況にあります. 必要なエンティティは互いに外部キーを持っているため、単純に結合できると思いますが、基本的にすべてのテーブルのすべての列である必要なセットを返すクエリを見つけるのに苦労しています。

t-sql では、キーの異なるテーブルで LEFT JOIN を実行するだけです。ビューを作成し、このビューでモデルを構築することを検討しましたが、データも更新できる必要があり、データベースからのビューは、私が理解している限り、EF で更新するのはそれほど簡単ではありません。

以下のクエリのようなことをしたいと思っていましたが、さまざまなテーブルも更新する必要があるため、これを行うためのエレガントなソリューションを誰かが持っているかどうか疑問に思っていました. それとも、EF に参加することについて私が理解していなかったことですか?

using(var _ctx = new EFEntities())
{
    var queryResult = from a in _ctx.a
    join b in _ctx.b
      on a.b_ID equals b.ID
    join c in _ctx.c
      on b.c_IDequals c.ID

    select new
    {
    //columns I want
    };
}
4

1 に答える 1

0

コメントで既に述べたように、クラス間にナビゲーション プロパティが必要ですが、データをフラット化したいが、他の場所で更新できるオブジェクトを維持したい場合は、次のようにすることができます。

using(var _ctx = new EFEntities())
{
    var queryResult = from a in _ctx.a
    join b in _ctx.b
      on a.b_ID equals b.ID
    join c in _ctx.c
      on b.c_IDequals c.ID

    select new
    {
        a = a,
        b = b,
        c = c
    };

}

于 2013-09-06T13:24:15.607 に答える