私には2つのクラスがあります:
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クラスと照合した後も、違いは見つかりませんでした。
私が偶然見つけた奇妙なことの1つは、次のように書いた場合です。
"SELECT *, BarId AS BarId FROM Foo JOIN Bar ON Foo.FooId = Bar.FooId"
Bar.BarIdは実際に期待どおりにマッピングされていますが、Dapperの使用方法を誤解していませんか、それともバグですか?