列 'Id'の名前を指定すると、Dapperと「操作によってランタイムが不安定になる可能性がある」

.net dapper

質問

私は.NET 4.5でdapperを使用して、MS SQlデータベースのクエリを容易にしています。以下はうまくいきます:

問題はありません:

const string sql = @"
SELECT g.Name, g.Slug, g.CreatedDate, COUNT(r.Id) recipientCount
FROM Groups g
LEFT JOIN GroupRecipients r ON r.GroupId = g.Id
WHERE g.CustomerId = @CustomerId
GROUP BY g.Id, g.Name, g.Slug, g.CreatedDate

";

return _connection.Query(sql、new {CustomerId = customerId})。ToList();

「Id」列を選択する問題が発生する - VerificationExceptionが発生する

const string sql = @"
SELECT g.Id, g.Name, g.Slug, g.CreatedDate, COUNT(r.Id) recipientCount
FROM Groups g
LEFT JOIN GroupRecipients r ON r.GroupId = g.Id
WHERE g.CustomerId = @CustomerId
GROUP BY g.Id, g.Name, g.Slug, g.CreatedDate

";
return _connection.Query<GroupWithRecipientCount>(sql, new { CustomerId = customerId }).ToList();

例外は、 「オペレーションはランタイムを不安定にする可能性があります。」というメッセージとともにスローされます。

誰が私がここで間違っているかもしれないかを突き止めることができますか?私のGroupWithRecipientCountクラスは次のようになります:

public class GroupWithRecipientCount
{
    public int Id { get; set; }
    public DateTime CreatedDate { get; set; }
    public string Name { get; private set; }
    public string Slug { get; private set; }
    public int RecipientCount { get; private set; }
}

編集1:

私はこれを削除した:

ID列を 'Id'以外の名前変更すると 、すべて正常に動作します。

"SELECT g.Id SomeOtherName, g.Name, ..."

私のクラス 'Idフィールドの名前をSomeOtherNameに変更した場合にも破損するように見えるので、問題はIdフィールドのマッピングに関連していると推測されます。

受け入れられた回答

SQLのフィールドにマッピングする際に、モデルクラスのデータ型が間違っていた場合、この例外が発生します。私のモデルは(間違って)intであり、SQL文は文字列を返していました。この奇妙なエラーメッセージが表示された場合は、データタイプを再度確認してください。


人気のある回答

私は元の例外を隠してしまい、代わりに別の例外を投げかけてしまいました。



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ