我在SQL Server中有两个表,如下所示:
Table1
int Id
varchar(32) Name
varchar(256) Description
Table2
int LeftKey
int RightKey
我在C#应用程序中有两个类,如:
MyClass
Name
Description
Match
MyClass Left
MyClass Right
我想要做的是创建一个Dapper查询,它将选择Table2中的所有行,加入Table1(* Key-> Id)并生成Match对象列表,并相应地设置Left和Right属性。
使用Dapper有一个很好的干净方法吗?
我已经在Stackoverflow上查看了其他多对多的问题,它们似乎都与我的场景不同。
答案 0 :(得分:0)
Dapper实际上只是一种分割网格并快速将列分配给对象的方法。听起来你只有两次相同的物体 - 一个用于左,一个用于右。
所以...你的sql可能看起来像这样:
select
lk.*,
rk.*
from Table2 t2
inner join Table1 t1_left on t1_left.Id = t2.LeftKey
inner join Table1 t1_right on t1_right.Id = t2.RightKey
你的衣服可能看起来像这样:
connection.Query<MyClass,MyClass,Match>(sqlhere,(mc1,mc2)=>{
var match = new Match();
match.Left = mc1;
match.Right = mc2;
return match;
});
不需要在sql中返回Table2中的任何内容,也不需要使用Dapper自动映射它。它实际上就像一个元组,所以我们可以在返回函数中创建它。