我无法将数据库的结果多重映射到我的对象。我想将生产对象映射到将它们保存到每个工作站的列表。
Table1:
productProduction Workstation
----------------- -----------
es1 cell_1
es2 cell_1
es4 cell_3
est3 cell_4
table2 workstations:
Workstation
----
cell_1
cell_2
cell_3
cell_4
public class Workstation {
public string Cell { get; set; }
public List<Production> {get; set;}
}
public class Production {
public string product_name { get; set; }
}
答案 0 :(得分:0)
如果您具有上述数据结构,则就像从product
获取数据并按group by运行一样简单。这是一个单一的数据库调用解决方案。
(IDbConnection) conn.Query("SELECT Production, Workstation FROM product").AsList()
.GroupBy(o -> o.Cell)
.Select(g-> new Workstation {
Cell = g.Key,
Productions = g.Select(x=>new Production { product_name = x.Production }).ToList()
})
.ToList();
如果workstations
包含其他数据,请在执行上述操作之前
class WorkstationRow { ... /* columns of workstation table */ };
var workstationDict = conn.Query<WorkstationRow>("SELECT * FROM workstations").AsList().
.ToDictionary(row -> row.Workstation, row -> row);
然后可以在最终构造中使用它。