2016-05-03 3 views
0

Использование dapper. когда я оцениваю это:Multi Mapping in Dapper

var trains = 
       conn.Query<Train, TrainDriver, Train>(
        "Select T.TrainId,T.OperatorId,T.TrainDescriptor,T.DriverId,TD.TrainDriverId,TD.Name,TD.Salary from trains as T" + 
        "Inner Join TrainDrivers as TD on (T.DriverId = TD.TrainDriverId)" + 
        "Where T.TrainId = @id", (t, td) => 
        { 
         t.Driver = td; 
         return t; 
        }, new {id = id}, null, true, "TrainDriverId"); 

Кажется, я получаю SQLException: «не может быть связан \ г \ NThe несколько частей идентификатора \» { «Мульти-часть идентификатора \» T.DriverId \ T .TrainId \ "не может быть привязан. \ R \ n Идентификатор многочастности \" T.TrainId \ "не может быть связан. \ R \ n Идентификатор многочастности \" T.OperatorId \ "не может быть связан. \ r \ n Идентификатор с несколькими частями \ T.TrainDescriptor \ не может быть связан. \ r \ n Идентификатор многочастности \ "T.DriverId \" не может быть связан. "}

Эти поля все существуют, и если я удаляю SQL и выполняю запрос отдельно в SQL Manager, он работает ...

Любые мысли?

+0

Если я профиль сервера, кажется, он пытается использовать процедуру sp_executesql хранится, и это, кажется, что это имея проблемы ... –

ответ

1

Вам просто не хватает пробелов в запросе SQL. Попробуйте:

var trains = 
        conn.Query<Train, Driver, Train>(
         "Select T.TrainId,T.OperatorId,T.TrainDescriptor,T.DriverId,TD.TrainDriverId,TD.Name,TD.Salary from trains as T" + 
         " Inner Join TrainDrivers as TD on (T.DriverId = TD.TrainDriverId)" + 
         " Where T.TrainId = @id", (t, td) => 
         { 
          t.Driver = td; 
          return t; 
         }, new { id = id }, null, true, "TrainDriverId"); 
+0

... Спасибо, что вместе с изменением некоторых полей в проекции, похоже, сделал трюк ... –

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