如何让Entity Framework在生成的类上使用接口?

时间:2010-02-02 17:52:47

标签: entity-framework design-by-contract

我有一个客户端正在使用Entity Framework的项目,我正在尝试从应用程序的其余部分抽象出生成的类。

一个生成的类是Category,它将Type作为属性。

我创建了一个我希望Category实现的接口,如下所示:

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

我之前在LINQ to SQL中做过这个,它运行正常。我在一个单独的文件中创建一个部分类,让它实现接口:

public partial class Category: ICategory
    //implement interface

但是,每当我尝试使用EF构建查询时使用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应用程序中开发它,数据上下文实际上是从服务中提取的,因此这里也存在客户端服务器关系。

1 个答案:

答案 0 :(得分:1)

作为一般规则,LINQ to Entities只能理解作为实体模型(EDMX)一部分的内容。因此,虽然您可以自由扩展实体类型是一个部分类,但您不能使用在LINQ to Entities查询中添加的属性,方法和接口引用,except for certain, very specific features.

但是,在这种情况下,以下查询应该为您提供所需的结果:

var resultsList = query.Select<ICategory>(c => c);