Entity framework EF和域服务上存储过程的ObjectSet和ResultSet

Entity framework EF和域服务上存储过程的ObjectSet和ResultSet,entity-framework,wcf-ria-services,domainservices,Entity Framework,Wcf Ria Services,Domainservices,在EF4中,默认对象集可用于每个实体。例如,我有一个表Employee,在创建实体模型之后,EF将在Employee上创建ObjectSet。 使用wcf ria服务时,默认查询如下: 公共IQueryable GetEmployee() { 返回this.ObjectContext.Employees; } 使用objectSet,我可以对结果应用include,如: return this.ObjectContext.Employees.Include("Department");

在EF4中,默认对象集可用于每个实体。例如,我有一个表Employee,在创建实体模型之后,EF将在Employee上创建ObjectSet。 使用wcf ria服务时,默认查询如下:

公共IQueryable GetEmployee() { 返回this.ObjectContext.Employees; }

使用objectSet,我可以对结果应用include,如:

    return this.ObjectContext.Employees.Include("Department");
然后我创建一个存储过程,比如MySearchForEmployee,并将其作为函数导入。结果映射到实体雇员。调用函数时,结果将是ResultSet,而不是ObjectSet

我想通过调用存储过程来创建域服务可用的类似方法,如:

   public IQueryable<Employeer> GetMySearch(string keyword)
        {
            return this.ObjectContext.MySearchForEmployee(keyword).Include("Department");
        }
public IQueryable GetMySearch(字符串关键字)
{
返回this.ObjectContext.MySearchForEmployee(关键字).Include(“部门”);
}
但我不能,因为上面的代码事件不能通过语法检查

我尝试以下方法转换结果类型:

 var results = this.ObjectContext.MySearchForEmployee(keyword);
 var objsets = (ObjectSet<Employee>) results;
var results=this.ObjectContext.MySearchForEmployee(关键字);
var objsets=(ObjectSet)结果;
然后我得到的错误是: 无法将类型“System.Data.Objects.ObjectResult”转换为“System.Data.Objects.ObjectSet”


如何实现此请求?

没有理由使用ObjectSet,因为不能在存储过程的一个查询中包含多个实体集。实体框架中不支持此操作


您可以尝试该项目,它具有从一个查询加载多个实体集的扩展。

没有理由使用ObjectSet,因为您不能从存储过程在一个查询中包含多个实体集。实体框架中不支持此操作


您可以尝试该项目,它具有从一个查询加载多个实体集的扩展。

谢谢。EFExtensions提供的解决方案不是我想要的。它提供了来自SP的多个结果集,就像SP中有多个select一样。但我想要的是获取entityset及其所有查找数据。比如ObjectSet的Include。例如,Employee可能包含3个查找表外键:DepartmentID、RoleID、GenderID。我想用实体框架做什么是不可能的。正如我所说,存储过程函数导入将只返回一种实体类型,并且不能包含它的查找数据。感谢您提供的信息。找到一个解决方案:在代码中手动加载查找。谢谢。EFExtensions提供的解决方案不是我想要的。它提供了来自SP的多个结果集,就像SP中有多个select一样。但我想要的是获取entityset及其所有查找数据。比如ObjectSet的Include。例如,Employee可能包含3个查找表外键:DepartmentID、RoleID、GenderID。我想用实体框架做什么是不可能的。正如我所说,存储过程函数导入将只返回一种实体类型,并且不能包含它的查找数据。感谢您提供的信息。找出一个解决方案:在代码中手动加载查找。