1

ドメインモデルと子エンティティに1つのSQLストアプロシージャの実行を設定しようとしています。おそらくこれはここで答えられます。それは不可能だと確信していますが、考えられる回避策を見つけるために質問を投げかけます。

私は非常に複雑なドメインモデルを持っており、顧客にクエリを実行してからその子を遅延ロードするのではなく、データをロードするより効率的な方法を探しています。以下に、私が達成しようとしていることの簡単な例を示しました。

public class Customer{
   public int Id { get; set; }
   public virtual Address Address { get; set; }
}

public class Address{
   public int Id { get; set; }
}

var customer = this.Database.SqlQuery <Customer>( "exec SP_Name")

EF5では複数のデータコンテキストを返すことができることは知っていますが、複数の子エンティティを解決できることを願っています。

私はiveが理にかなっていることを願っています。私はたくさんの睡眠が不足しているので、そうでない場合はお詫びします。10時間遅れたタイムゾーンでスポーツをフォローすると、難しくなります。:(

4

1 に答える 1

2

EF のストアド プロシージャは、熱心な読み込みを提供しません。単一レベルのエンティティのみをロードできます。リンクされた記事に記載されているように、複数の結果セットでストアド プロシージャを使用できますが、それは EDMX でのみ機能し、代わりにマップされた関数のインポートを実行する必要がありますSqlQuery。また、ストアド プロシージャの代わりに LINQ クエリでイーガー ロードを使用して、遅延ロードを回避することもできます。

var customers = context.Set<Customer>()
                       .Include(c => c.Address)
                       .FirstOrDefault(c => c.Name == someName);
于 2012-10-29T08:43:43.573 に答える