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");
我似乎遇到了 SQL异常:{"The multi-part identifier \"T.DriverId\" 无法绑定。\r\nThe 多部分标识符 \"T.TrainId\" 无法绑定。\r\nThe 多部分标识符 \"T.TrainId\" 无法绑定。\r\nThe 多部分标识符 \"T.OperatorId\" 无法绑定。\r\nThe 无法绑定多部分标识符 \"T.TrainDescriptor\"。\r\nThe 无法绑定多部分标识符 \"T.DriverId\"。"}
这些字段都存在,如果我在 SQL 管理器中分别删除 SQL 和 运行 查询,它会起作用...
有什么想法吗?
您只是在 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");
使用小巧玲珑。当我对此进行评估时:
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");
我似乎遇到了 SQL异常:{"The multi-part identifier \"T.DriverId\" 无法绑定。\r\nThe 多部分标识符 \"T.TrainId\" 无法绑定。\r\nThe 多部分标识符 \"T.TrainId\" 无法绑定。\r\nThe 多部分标识符 \"T.OperatorId\" 无法绑定。\r\nThe 无法绑定多部分标识符 \"T.TrainDescriptor\"。\r\nThe 无法绑定多部分标识符 \"T.DriverId\"。"}
这些字段都存在,如果我在 SQL 管理器中分别删除 SQL 和 运行 查询,它会起作用...
有什么想法吗?
您只是在 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");