公开实体框架的接口POCO列表,其中没有引用实体框架

本文关键字:实体 框架 引用 POCO 接口 列表 | 更新日期: 2023-09-27 17:59:47

我正在使用实体框架4的POCO模板。

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

接口中只有一个属性:

IQueryable<Client> Clients { get; set; }

实际生成的文件中包含以下内容:

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

现在,ObjectSet实现了IQueryable<>。但当我这样做时,我会得到以下错误:

"ClientContracts.ArupEntities"未实现接口成员"RepositoryInterfaces.IClientReseository.Clients"。"ClientContracts.ArupEnities.Clients"无法实现"RepositoryInterfaces.IClientReseository.Clients",因为它不具有匹配的返回类型"System.Linq.IQueueryable"

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

有没有一种方法可以将POCO实体列表公开为不绑定到实体框架的接口?

公开实体框架的接口POCO列表,其中没有引用实体框架

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

您可以重新定义界面,如:

 IQueryable<Client> ClientsQuery();

在部分上下文类中使用:

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