2012-05-10 17 views
0

が、私は 'レイヤード' アプリケーションを持って配置されています。 EntityFrameworkのエンティティは、すべてのレイヤーのモデルに基づいたアプローチです。 また、遅延ロードを使用しています。例えば、私が持っているDataLayerでDbContextは、オブジェクトの内部リスト

[Serializable] 
[DataContract] 
public class Employee 
{ 
    [DataMember] 
    public string name { get; set; } 
    [DataMember] 
    public List<Image> images { get; set; } 
} 

動作とEmployeeDAOのような:たとえば

私はEmployeeエンティティを持っている

public List<Employee >GetAll() 
{ 
    List<Employee> resultList; 

    using (ModelContainer ctx = new ModelContainer()) // DbContext 
    { 
     resultList = ctx.Employees.All<Employee>().ToList<Employee>(); 
    } 

    return resultList; 
} 

問題は、私は例外をのgettinだということです従業員の中の画像リストのために「オブジェクトが処分されました」と、私は理由を理解できません。

ありがとうございました!

答えて

1

おそらく遅延読み込みのためです。 GetAllメソッドはコンテキストを作成し、従業員を読​​み込んだ後にコンテキストを破棄しますが、遅延読み込みではコンテキストを維持して生き続ける必要があります。アプリケーションを再設計し、サービスレイヤーのコンテキストライフタイムを制御するか、レイジーローディングを使用しないでください。

Btw。サービスレイヤがリモートレイヤ(WCFまたはその他のテクノロジ)を表す場合は、遅延読み込みをまったく使用しないでください。

+0

はい、私はすでに変更しました。 私は、オブジェクトのリストオブジェクトを取得するために、遅延ロードとDbContextのIncludeメソッドの検索を使用していません。 ありがとうLadislav !! – gonzalomelov

関連する問題