2017-02-13 10 views
0

У меня есть 2 таблицы в SQL Server, как это:Dapper.NET - Сопоставление отношения многих ко многим базам данных?

Table1 
    int Id 
    varchar(32) Name 
    varchar(256) Description 

Table2 
    int LeftKey 
    int RightKey 

у меня есть 2 классов в приложении C#, как:

MyClass 
    Name 
    Description 

Match 
    MyClass Left 
    MyClass Right 

То, что я хочу сделать, это создать Dapper запрос, который будет выбрать все строки в таблице 2, присоединившись к таблице 1 (* Key-> Id) и создайте список объектов соответствия с установленными соответственно свойствами Left и Right.

Есть ли хороший чистый способ сделать это с помощью Dapper?

Я рассмотрел многие многие вопросы о Stackoverflow, и все они, похоже, отличаются от моего сценария.

ответ

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; 

}); 

Нет необходимости возвращать ничего из Table2 в вашем SQL, ни автоматически сопоставьте его с Dapper. На самом деле это просто действует как Tuple, поэтому мы можем создать его в функции возврата.

Смежные вопросы