我有两节课:
class Foo{
public int FooId { get; set; }
...
public Bar Bar { get; set }
}
class Bar{
public int BarId { get; set; }
public int FooId { get; set }
...
}
当我然后像这样运行查询时:
sqlConnection.Query<Foo, Bar, Foo>(
"SELECT * FROM Foo JOIN Bar ON Foo.FooId = Bar.FooId",
(foo, bar) => {
foo.Bar = bar;
return foo;
},
splitOn: "FooId");
结果将是 Foo 和 Bar 上的所有属性都将映射,但 Bar.BarId 除外。在对照我的 Bar 类检查数据库中的列名和类型后,我仍然找不到任何差异。
我偶然发现的一件奇怪的事情是,如果我写:
"SELECT *, BarId AS BarId FROM Foo JOIN Bar ON Foo.FooId = Bar.FooId"
Bar.BarId 实际上按预期映射,我是否误解了如何使用 Dapper 或者这是一个错误?