代码之家  ›  专栏  ›  技术社区  ›  Joseph

如何让实体框架在生成的类上使用接口?

  •  1
  • Joseph  · 技术社区  · 14 年前

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

    一个生成的类是category,它将say type作为属性。

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

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

    我以前在linq to sql中做过这个,它工作得很好。我在一个单独的文件中创建一个部分类,并让它实现接口:

    public partial class Category: ICategory
        //implement interface
    

    然而,每当我试图用ef构建一个查询时,它会说它不支持类型<gt;()。

    例子:

    var query = from c in DataContext.Category
                where Type == "some type"
                select c;
    
    var resultsList = query.OfType<ICategory>(); //error here (not supported)
    

    我在这里做错什么了?

    其他需要注意的事情:我正在一个Silverlight应用程序中开发这个,数据上下文实际上是从一个服务中提取的,所以这里也有一个客户机-服务器关系。

    1 回复  |  直到 14 年前
        1
  •  1
  •   Craig Stuntz    14 年前

    一般来说,linq to实体只能理解实体模型(edmx)的一部分。因此,虽然您可以自由地将实体类型扩展为部分类,但不能使用在linq中添加到实体查询中的属性、方法和接口引用, except for certain, very specific features.

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

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