我正在尝试做这样的事情:
public class DataService : DataService<EmployeeCollection>
{
public IQueryable<EmployeeBase> GetEmployeeData(string EmpIdSubstring)
{
var employees = new List<EmployeeBase>();
employees.Add(new Level1Employee());
employees.Add(new Level2Employee());
return employees.AsQueryable();
}
}
下面:
Level1Employee
和Level2Employee
类派生自EmployeeBase
class。EmployeeBase
类定义以[DataServiceKey("Id")]
。EmployeeCollection
包含IEnumerable<EmployeeBase>
。但是当我在浏览器中浏览此服务时,出现以下错误:
内部服务器错误。 “Level1Employee”类型不是复杂类型或实体类型。
我尝试将[DataServiceKey]
类从EmployeeBase
类移到Level1Employee
和Level2Employee
类定义。但得到同样的错误。
请注意,如果我返回包含EmployeeBase
类型元素的雇员集合,则该服务可以正常工作。
有可能实现这一目标吗?非常感谢任何帮助/指针/见解。
答案 0 :(得分:0)
这是基于来自RIA服务的DomainServices的行为而在黑暗中拍摄的。
尝试为每个子类添加一个函数。每个返回IQueryable<Level1Employee>
和IQueryable<Level2Employee>.
答案 1 :(得分:0)
上下文类(在您的情况下为EmployeeCollection)必须使用getter和IQueryable类型公开公共属性,并且EmployeeBase类必须具有DataServiceKey属性,以便将EmployeeBase(及其所有派生类型)识别为实体类型。 您还需要在方法上添加[WebGet]属性,以便将其识别为服务操作。