2012-01-04 2 views
0

DbSetからObjectSetを作成する方法はありますか?DbSetとObjectSet - 文字列述語

いくつかの背景情報:オブジェクトコンテキスト内でDbSetsを返すモデル(EF 4.2)があります。私は古いデータモデル(EF4)からAPIをサポートするためにそれを改造する必要があります。古いデータモデルはオブジェクトセットを返すもので、API内のいくつかのメソッド(IISがホストするWCF 3.5サービス)は、古いモデルに渡されたクエリ文字列述語を受け入れます。新しいモデルでこの動作を再現する必要がありますが、DbSet.Whereメソッドは文字列述語パラメータを受け入れません。 Object Context(ObjectContext.CreateObjectSet<T>(string))からオブジェクトセットを作成することで部分的に動作させることができましたが、このようにすると、正しく動作するインクルードステートメントが得られないようです。

DbSetへのパス文字列の述部のいずれかに方法はありますか.Include方法は、関連するデータ・セットをロードするDbSetからObjectSetを取得する方法はありますか? advnceで

おかげ(以下、いくつかのコードスニペット):

クラスObjectSetを作成するために、(私は私のコンテキストで初期化して、代わりにDbSetを使用するのではClinicalContext.Examsなどでこれらのために返される、私は基本的なオブジェクトコンテキストを取得し、作成しますEntitySetDbSetに含まれるのと同じオブジェクトを使用して。

public class ExamServicesEntities 
{ 
    private ClinicalContext _Context; 
    public ExamServicesEntities(ClinicalContext context) 
    { 
     _Context = context; 
    } 

    private ObjectSet<Exam> _ExamEntities; 
    public ObjectSet<Exam> Exams 
    { 
     get 
     { 
      if (_ExamEntities == null) 
      { 
       _ExamEntities = _Context.ObjectContext.CreateObjectSet<Exam>("Exams"); 
      } 
      return _ExamEntities; 
     } 
    } 

    private ObjectSet<Visit> _VisitEntities; 
    public ObjectSet<Visit> Visits 
    { 
     get 
     { 
      if (_VisitEntities == null) 
      { 
       _VisitEntities = _Context.ObjectContext.CreateObjectSet<Visit>("Visits"); 
      } 
      return _VisitEntities; 
     } 
    } 

}

これを行うことは、正しくデータをロードすることから、しかし私が他のオブジェクトの1つを含むようにしようとすると(参照には訪問が含まれ、訪問には患者が含まれます)、参照は作成されません。

答えて

0

ObjectSetに基づいて2番目のコンテキストオブジェクトを生成するためにコンテキストオブジェクトを生成するために使用されたT4テンプレートをコピーして調整することによってこれを解決しました。

関連する問題