2

EF 4 では、エンティティごとに既定の ObjectSet を使用できます。たとえば、テーブル Employee があり、エンティティ モデルを生成した後、EF は Employee に ObjectSet を作成します。次に、wcf ria サービスを使用する場合、デフォルトのクエリは次のようになります。

public IQueryable GetEmployee() { return this.ObjectContext.Employees; }

objectSet を使用すると、次のように結果に include を適用できます。

    return this.ObjectContext.Employees.Include("Department");

次に、MySearchForEmployee というストアド プロシージャを作成し、それを関数としてインポートします。結果はエンティティ Employee にマップされます。関数を呼び出すと、結果は ObjectSet ではなく ResultSet になります。

次のようなストアドプロシージャを呼び出して、ドメインサービスで同様のメソッドを利用できるようにしたい:

   public IQueryable<Employeer> GetMySearch(string keyword)
        {
            return this.ObjectContext.MySearchForEmployee(keyword).Include("Department");
        }

しかし、上記のコードイベントは構文チェックに合格できないため、できません。

結果の型を変換するために次の方法を試しました:

 var results = this.ObjectContext.MySearchForEmployee(keyword);
 var objsets = (ObjectSet<Employee>) results;

次に、次のようなエラーが発生しました: タイプ 'System.Data.Objects.ObjectResult' を 'System.Data.Objects.ObjectSet' に変換できません

このリクエストを実装するには?

4

1 に答える 1

0

ストアドプロシージャからの1つのクエリに複数のエンティティセットを含めることはできないため、ObjectSetを使用する理由はありません。これは、EntityFrameworkではサポートされていません。

EFExtensionsプロジェクトを試すことができます。このプロジェクトには、1つのクエリから複数のエンティティセットをロードするための拡張機能があります。

于 2010-07-19T18:37:45.773 に答える