1

我有一个项目,客户端使用实体框架,我试图从应用程序的其余部分抽象出生成的类。

一个生成的类是 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 应用程序中开发它,并且数据上下文实际上是从服务中提取的,因此这里也存在客户端服务器关系。

4

1 回答 1

1

作为一般规则,LINQ to Entities 只能理解属于您的实体模型 (EDMX) 一部分的事物。因此,虽然您可以自由地将实体类型扩展为部分类,但您不能使用在 LINQ to Entities 查询中添加的属性、方法和接口引用,但某些非常具体的功能除外。

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

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