在EF 4中,默认ObjectSet可用于每个实体。例如,我有一个表Employee,在生成实体模型之后,EF将在Employee上创建ObjectSet。则在使用wcf ria服务时,默认查询将如下所示:
公共返回GetEmployee() { IQueryable this.ObjectContext.Employees;}
使用objectSet,我可以对结果应用包含,如下所示:
return this.ObjectContext.Employees.Include("Department");
然后,我创建了一个存储过程,名为MySearchForEmployee,并将其作为函数导入。结果被映射到实体Employee。当调用函数时,结果将是ResultSet,而不是ObjectSet。
我想通过调用存储过程来为域服务提供类似的方法,比如:
public IQueryable<Employeer> GetMySearch(string keyword)
{
return this.ObjectContext.MySearchForEmployee(keyword).Include("Department");
}
但是我不能,因为上面的代码事件不能通过语法检查。
我尝试了以下方法来传递结果类型:
var results = this.ObjectContext.MySearchForEmployee(keyword);
var objsets = (ObjectSet<Employee>) results;
然后我得到了错误:无法将类型'System.Data.Objects.ObjectResult‘转换为'System.Data.Objects.ObjectSet’
如何实现此请求?
发布于 2010-07-19 18:37:46
没有理由使用ObjectSet,因为您不能在来自存储过程的一个查询中包含多个实体集。Entity Framework中不支持这一点。
您可以尝试EFExtensions项目,它具有从一个查询加载多个实体集的扩展。
https://stackoverflow.com/questions/3282156
复制