【问题标题】:asp.net web api controllers accept POCO or generic dataasp.net web api 控制器接受 POCO 或通用数据
【发布时间】:2014-05-02 23:41:57
【问题描述】:

我是 ASP.NET Web API 的新手,并且已经研究了一段时间。诚然,我有决策麻痹症。我想为数据库中大约有 250 个表的系统制作一个类似 REST 的 API。它基本上是一个带有 UI 和数据访问层的 2 层系统,不使用业务对象或 ORM。

我无法决定我的 Web API 控制器是否应该接受/返回:

a) 名称/值对的IDictionary,我会将其打包成sql参数并传递给数据访问层并返回一个序列化的ado.net数据表

b) 强类型复杂对象(PO​​CO 对象)。例如:所有属性都与数据库中的字段匹配的帐户类。

如果我必须为系统中的每个表创建 POCO 类,那么将有 250 多个类基本上什么都不做,除了打包数据并将其传递给我们的数据访问层。

此外,似乎我需要为我想通过 Web Api 公开的数据库中的每个表创建一个 ApiController,因为每个路由只有 GET、POST、PUT、DELETE?请帮忙,把头撞在桌子上。

【问题讨论】:

    标签: orm asp.net-web-api poco restful-architecture asp.net-apicontroller


    【解决方案1】:

    请看下面的答案:

    1.**如果您的资源仅支持 GET 方法,则使用 **"IDictionary of name/value pairs" 很好。如果您希望用户发布或更新数据,您将如何验证数据?另外,如果你想添加HATEOAS,你会怎么做?在扩展方面,您将如何支持嵌套对象层次结构,如下所示:

    public class Product 
    {
        public int Id { get; set; }
        public string Name { get; set; }
    
        public string Category { get; set; }
    
        public decimal Price { get; set; }
    
        public IList<PurchaseDetail> PurchaseHistory { get; set; }
    }
    
    public class PurchaseDetail
    {
        public int Id { get; set; }
    
        public DateTime PurchaseDate { get; set; }
    
        public decimal Cost { get; set; }
    }
    

    2. 通过定义不同的路由,您可以为每个资源拥有多个 GET、POST 等。更多来自此链接http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-in-aspnet-web-api

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-10
      • 2013-06-23
      • 1970-01-01
      • 1970-01-01
      • 2016-07-08
      • 1970-01-01
      相关资源
      最近更新 更多