Massive で次のクエリを実行しようとすると、ランタイム バインダー例外が発生するのはなぜですか?
public dynamic Find(string email, string type)
{
dynamic result = new ExpandoObject();
result = this.Query(@"SELECT * FROM Addresses a
INNER JOIN Members m ON m.Id = a.MemberId
INNER JOIN AddressType at ON at.Id = a.AddressTypeId
WHERE m.Email = @0 AND at.Type = @1", new {email, type});
return result;
}
解決策を表示するように編集:「Id」という名前の列が 1 つだけ返されるように、クエリを変更する必要がありました。メンバーとアドレスの複数の列に「Id」という名前の列があったため、バインディング エラーが発生していました。クエリで単一の結果を取得するには、次のように変更する必要がありました。
result = this.Query(@"SELECT a.* FROM Addresses a
INNER JOIN Members m ON m.Id = a.MemberId
INNER JOIN AddressType at ON at.Id = a.AddressTypeId
WHERE m.Email = @0 AND at.Type = @1", new object[] { email, type }).Single();
これが他の誰かに役立つことを願っています。