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");