Dapperで遊んで、これまでの結果に非常に満足しています-興味をそそられます!
Studentしかし今、私の次のシナリオは、2つのテーブル(aとテーブル)からデータを読み取ることAddressです。
Studentテーブルの主キーは、、StudentID (INT IDENTITY)です。テーブルへのリンクと呼ばれるFKもあります。AddressAddressID (INT IDENTITY)StudentAddressIDAddress
私のアイデアは、関心のあるプロパティを使用して、テーブルごとに1つずつ、2つのクラスを作成することでした。さらに、C#のクラスにPrimaryAddresstypeのプロパティを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つの型引数でこのオーバーロードを使用することを主張する理由を私は本当に理解していません...