在 EF 4 中,默认 ObjectSet 可用于每个实体。比如我有表Employee,生成Entity Model后,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'
如何实现这个要求?