Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在基本类型上创建WCF数据服务_C#_Wcf_Exception Handling_Wcf Data Services_Odata - Fatal编程技术网

C# 如何在基本类型上创建WCF数据服务

C# 如何在基本类型上创建WCF数据服务,c#,wcf,exception-handling,wcf-data-services,odata,C#,Wcf,Exception Handling,Wcf Data Services,Odata,我正在尝试这样做: public class DataService : DataService<EmployeeCollection> { public IQueryable<EmployeeBase> GetEmployeeData(string EmpIdSubstring) { var employees = new List<EmployeeBase>(); employees.Add(new Level1Employee()

我正在尝试这样做:

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();
  }
}
公共类数据服务:数据服务
{
公共IQueryable GetEmployeeData(字符串EmpIdSubstring)
{
var employees=新列表();
添加(新级别1员工());
添加(新的Level2Employee());
return employees.AsQueryable();
}
}
在这里:

  • Level1Employee
    Level2Employee
    类派生自
    EmployeeBase
  • EmployeeBase
    类定义用
    [DataServiceKey(“Id”)]
    修饰
  • EmployeeCollection
    包含一个
    IEnumerable
  • 但当我在浏览器中浏览此服务时,会出现以下错误:

    内部服务器错误。类型“Level1Employee”不是复杂类型或实体类型

    我尝试将
    [DataServiceKey]
    属性从
    EmployeeBase
    类移动到
    Level1Employee
    Level2Employee
    类定义。但是得到同样的错误

    请注意,如果我返回一个包含
    EmployeeBase
    类型元素的employees集合,则服务可以正常工作


    有可能做到这一点吗?非常感谢您的任何帮助/指点/见解。

    这是一种基于RIA服务的DomainServices行为的暗中拍摄

    尝试为每个子类添加一个函数。分别返回
    IQueryable
    IQueryable。

    上下文类(在您的示例中为EmployeeCollection)必须公开一个带有getter和IQueryable类型的公共属性,EmployeeBase类必须具有DataServiceKey属性,以便用于EmployeeBase(及其所有派生类型)待识别为实体类型。
    您还需要在方法上添加[WebGet]属性,以便将其识别为服务操作。

    如果您发布代码、XML或数据示例,请在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码示例”按钮(
    {}
    ),以精确地格式化和语法突出显示它!如果发布错误消息,请使用块引号(`````)正确设置错误消息的格式。您好,Vitek,1.EmployeeCollection有一个公共getter属性,返回类型为IQueryable。2.EmployeeBase类有一个DataServiceKey属性,该属性的键为“Id”。3.[WebGet]属性也已就位。它仍然不工作。“不工作。”“表示您得到了问题中描述的错误?Level1员工是否为公共班级?如果可能的话,你能发布它的定义吗?在任何情况下,如果您可以在调试器中捕获异常并发布堆栈跟踪,这也会有所帮助。这对我不起作用,因为EmployeeCollection类型的单个集合可能同时包含Level1Employee和Level2Employee类型的元素。是的,您实际上不必使用这些函数。我看到了“OData”标记,我认为您使用的是OData工具,如果它们与RIA服务工具类似,那么使用这些函数将允许OData服务实现类。此时,RIA服务不会知道它们的存在。