在EF 4中,默认的ObjectSet可用于每个实体。例如,我有表Employee,在创建实体模型后,EF将在Employee上创建ObjectSet。 然后在使用wcf ria服务时,默认查询将如下:
public IQueryable GetEmployee() { return this.ObjectContext.Employees; }
使用objectSet,我可以在结果上应用include,如:
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'
如何实施此请求?
答案 0 :(得分:0)
没有理由使用ObjectSet,因为您不能在存储过程的一个查询中包含多个实体集。实体框架不支持此功能。
您可以尝试EFExtensions项目,它具有从一个查询加载多个实体集的扩展。