如何使用ServiceStack来获取非规范化的对象数组

时间:2013-09-22 20:10:38

标签: sql sql-server orm servicestack

有人可以提供或链接到一个简单的示例,说明如何使用ServiceStack从具有多个连接的现有SQLServer数据库返回非规范化对象数组?

返回的对象只有查询中的一小部分列,并且具有不同的名称。

我宁愿使用ORMLite,但如果需要,我很乐意使用EF。我将把它用于只读操作。

E.g。如果我要使用以下连接表查询数据库:CustomerOrderOrderline,我想返回一个反规范化列表,如下所示,但使用不同的列名称比db上使用的名称:

  • 客户名称
  • 订单日期
  • OrderLine Number
  • Prod Desc
  • 数量

1 个答案:

答案 0 :(得分:2)

OrmLite中,如果您需要执行复杂查询或自定义连接,则可以始终回退到自定义SQL,例如:

List<CustomerProductOrder> results = db.Select<CustomerProductOrder>(
  @"SELECT c.Name, o.Date, ol.Number, p.Desc, o.Qty
      FROM Order o INNER JOIN Customer c ON (o.CustomerId = c.Id) ...
     WHERE o.Id = {0}", 1001);

或者通过使用参数化查询,例如:

List<CustomerProductOrder> results = db.Query<CustomerProductOrder>(
  @"SELECT c.Name, o.Date, ol.Number, p.Desc, o.Qty
      FROM Order o INNER JOIN Customer c ON (o.CustomerId = c.Id)  ...
     WHERE o.Id = @orderId", new { orderId = 1001 });

其中CustomerProductOrder是此查询的非规范化POCO,它将使用结果集中的匹配列填充所有属性。

可以在OrmLite's API Overview上找到更多OrmLite查询示例。