使用存储库模式时,ServiceStack操作未显示在元数据中

Rav*_*dag 1 c# servicestack asp.net-mvc-4

这是DTO

public class Employee
    {
        public int EmployeeID { get; set; }
        public string EmployeeName { get; set; }
        public string EmployeeeAddress { get; set; }

    }
Run Code Online (Sandbox Code Playgroud)

这是回应

 public class EmployeeResponse
    {
        public List<Employee> listofemp { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

这是服务堆栈服务

public class EmployeeServices:Service
    {
        public dbRepo<Employee> objEmploye; //Repository (which is working fine)

        public EmployeeServices()
        {
            objEmploye = new dbRepo<Employee>();
        }


      public object getAll(Employee obj)
      {
          var objlist = new EmployeeResponse {listofemp = objEmploye.GetAll().ToList()};
          return objlist.listofemp;
      }

    }
Run Code Online (Sandbox Code Playgroud)

这是AppHostBase类

public class ServiceHostApp:AppHostBase
    {
        public ServiceHostApp()
            : base("ServiceStack WebSerivces", typeof(EmployeeServices).Assembly)
        {
        }
        public override void Configure(Funq.Container container)
        {


        }
    }
Run Code Online (Sandbox Code Playgroud)

服务堆栈操作不会显示

我的问题是为什么EmployeeServices Metod没有显示在元数据中?有什么额外的事情,我需要做什么?

Moo*_*ice 7

ServiceStack对与所使用的Http Verb匹配的方法名称进行操作,因此不getAll应该使用Get(或者All如果有任何动词可以用来执行此操作).

无需退货object......

  public List<Employee> Get(Employee obj)
  {
      var objlist = new EmployeeResponse {listofemp = objEmploye.GetAll().ToList()};
      return objlist.listofemp;
  }
Run Code Online (Sandbox Code Playgroud)

最后,您可以随时装饰Employee:

[Route("/Employee")]
public class Employee
{
    public int EmployeeID { get; set; }
    public string EmployeeName { get; set; }
    public string EmployeeeAddress { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

该属性在命名空间中定义ServiceStack.ServiceHost.