我有一个客户端正在使用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应用程序中开发它,数据上下文实际上是从服务中提取的,因此这里也存在客户端服务器关系。
答案 0 :(得分:1)
作为一般规则,LINQ to Entities只能理解作为实体模型(EDMX)一部分的内容。因此,虽然您可以自由扩展实体类型是一个部分类,但您不能使用在LINQ to Entities查询中添加的属性,方法和接口引用,except for certain, very specific features.
但是,在这种情况下,以下查询应该为您提供所需的结果:
var resultsList = query.Select<ICategory>(c => c);