1

現在、プロジェクトを LINQ から SQL、LINQ から Entity に変更しています。次のエンティティがあります。

Customer -> Address

このメソッドを使用して、WCF Data Service async を介してデータベースにクエリを実行します。

public static async Task<IEnumerable<TResult>> ExecuteAsync<TResult>(this DataServiceQuery<TResult> query)
{
    var queryTask = Task.Factory.FromAsync<IEnumerable<TResult>>(query.BeginExecute(null, null), (asResult) =>
    {
        var result = query.EndExecute(asResult);
        return result;
    });

    return await queryTask;
}

このエンティティに対してクエリを実行すると、Customer にアクセスできますが、アドレスはまだ null です。

var query = (DataServiceQuery<Customer>)client.Customer.OrderBy(session => session.LastName);
var data = await query.ExecuteAsync();
Test2.Text = data.LastName(); //returns the lastname
Test2.Text = data.First().Address.Stret; //Address is Null

データベースを確認しましたが、外部キーが正しく設定されています。アドレスが null なのはなぜですか? 別の方法でクエリを実行する必要がありますか? LINQ to SQL では関連エンティティにアクセスできましたが、これを LINQ to Entity でアーカイブするにはどうすればよいですか?

4

2 に答える 2

2

それはすべてモデルによって異なります。明示的読み込み、一括読み込み、遅延読み込みの 3 つの方法があります。熱心な読み込みには、を使用する必要がありますIncludeVirtualまたは、プロパティの横にキーワードを指定して遅延読み込みを有効にしLazyLoadingEnabled = trueDataContext. 関連するエンティティの読み込みの詳細については、http: //msdn.microsoft.com/en-us/data/jj574232.aspxを参照してください。

于 2013-03-27T18:33:20.010 に答える
2

[nkvu - 元のポスターに示されているように、答えとして動いています。また、さまざまな読み込み戦略の説明については、この質問に対する @RAS の回答を強くお勧めします。]

おそらく 、クエリを作成して関連するエンティティを読み込むときに、Address に対して[Expand]( http://msdn.microsoft.com/en-us/library/ee358709.aspx ) 呼び出しを使用してみてください。

于 2013-03-27T19:02:30.273 に答える