EF和域服务中存储过程中的ObjectSet和ResultSet

时间:2010-07-19 14:50:00

标签: entity-framework wcf-ria-services domainservices

在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'

如何实施此请求?

1 个答案:

答案 0 :(得分:0)

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

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