【问题标题】:Expose Interface to Entity Framework POCO lists with out referencing Entity Framework在不引用实体框架的情况下向实体框架 POCO 列表公开接口
【发布时间】:2011-06-22 04:52:34
【问题描述】:

我正在使用 Entity Framework 4 的 POCO 模板。

我创建了另一个文件来实现上下文对象的部分类。在该文件中,我添加了对我创建的接口的引用。

接口中只有一个属性:

IQueryable<Client> Clients { get; set; }

实际生成的文件里面有这个:

public ObjectSet<Patient> Clients
{
    get { return _clients  ?? (_clients = CreateObjectSet<Client>("Clients")); }
}
private ObjectSet<Client> _clients;

现在,ObjectSet implements IQueryable<>。但是当我这样做时,我收到以下错误:

“ClientContracts.ArupEntities”未实现接口成员“RepositoryInterfaces.IClientRepository.Clients”。 “ClientContracts.ArupEntities.Clients”无法实现“RepositoryInterfaces.IClientRepository.Clients”,因为它没有匹配的返回类型“System.Linq.IQueryable”

我认为我可以做到这一点并让它发挥作用。显然我不能......

有没有办法可以将 POCO 实体列表公开为未绑定到实体框架的接口?

【问题讨论】:

    标签: c# entity-framework interface poco


    【解决方案1】:

    不,这不是它的工作方式。实现接口时,必须准确返回接口定义中定义的类型。您在示例中使用的泛型类型也存在一些差异 - Patient / Client

    你可以像这样重新定义界面:

     IQueryable<Client> ClientsQuery();
    

    在部分上下文类中使用:

     public IQueryable<Client> ClientsQuery()
     {
         return Clients;
     }
    

    【讨论】:

    • 感谢您的回答。 (顺便说一句,差异是由于我在示例中的错误。)
    猜你喜欢
    • 2011-08-21
    • 1970-01-01
    • 2012-03-22
    • 2012-03-08
    • 1970-01-01
    • 2012-02-08
    • 1970-01-01
    • 2011-03-04
    • 2016-03-17
    相关资源
    最近更新 更多