Dapperで遊んで、これまでの結果に非常に満足しています-興味をそそられます!
Student
しかし今、私の次のシナリオは、2つのテーブル(aとテーブル)からデータを読み取ることAddress
です。
Student
テーブルの主キーは、、StudentID (INT IDENTITY)
です。テーブルへのリンクと呼ばれるFKもあります。Address
AddressID (INT IDENTITY)
Student
AddressID
Address
私のアイデアは、関心のあるプロパティを使用して、テーブルごとに1つずつ、2つのクラスを作成することでした。さらに、C#のクラスにPrimaryAddress
typeのプロパティをAddress
配置しました。Student
次に、1つのクエリで学生と住所の両方のデータを取得しようとしました-Githubページにあるサンプルを模倣します:
var data = connection.Query<Post, User>(sql, (post, user) => { post.Owner = user; });
var post = data.First();
ここで、aPost
とaUser
が取得され、投稿の所有者がユーザーに設定されます-返されるタイプはPost
-正しいですか?
したがって、私のコードでは、汎用Query
拡張メソッドに2つのパラメーターを定義します。1つStudent
目は返される必要がありAddress
、2つ目はstudentインスタンスに格納されます。
var student = _conn.Query<Student, Address>
("SELECT s.*, a.* FROM dbo.Student s
INNER JOIN dbo.Address a ON s.AddressID = a.AddressID
WHERE s.StudentenID = @Id",
(stu, adr) => { stu.PrimaryAddress = adr; },
new { Id = 4711 });
問題は-VisualStudioでエラーが発生します:
一般的なメソッド'Dapper.SqlMapper.Query(System.Data.IDbConnection、string、System.Func、dynamic、System.Data.IDbTransaction、bool、string、int?、System.Data.CommandType?)'を使用するには、6つの型引数が必要です。
Dapperが6つの型引数でこのオーバーロードを使用することを主張する理由を私は本当に理解していません...