1

クライアントが Entity Framework を使用しているプロジェクトがあり、生成されたクラスを残りのアプリケーションから抽象化しようとしています。

生成されたクラスの 1 つは Category で、Type というプロパティがあります。

次のように、Category に実装するインターフェイスを作成しました。

public interface ICategory
{
    string Type { get; set;}
}

以前に LINQ to SQL でこれを行ったことがありますが、問題なく動作します。別のファイルに部分クラスを作成し、インターフェイスを実装します。

public partial class Category: ICategory
    //implement interface

ただし、EF を使用してクエリを作成しようとすると、OfType<>() をサポートしていないと表示されます。

例:

var query = from c in DataContext.Category
            where Type == "some type"
            select c;

var resultsList = query.OfType<ICategory>(); //error here (not supported)

ここで何が間違っていますか?

その他の注意点: Silverlight アプリケーションでこれを開発しており、データ コンテキストは実際にはサービスから取得されているため、ここでもクライアントとサーバーの関係が進行しています。

4

1 に答える 1

1

原則として、LINQ to Entities は、エンティティ モデル (EDMX) の一部であるもののみを理解できます。したがって、エンティティ型を部分クラスに自由に拡張できますが、特定の非常に特殊な機能を除いて、LINQ to Entities クエリに追加するプロパティ、メソッド、およびインターフェイス参照を使用することはできません。

ただし、この場合、次のクエリで必要な結果が得られるはずです。

var resultsList = query.Select<ICategory>(c => c);
于 2010-02-02T18:12:10.120 に答える