Dapper와 "Operation"은 열 'Id'를 명명 할 때 런타임을 불안정하게 만들 수 있습니다.

.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 데이터 필드에 매핑 할 때 잘못된 데이터 형식을 때이 예외가 있어요. 내 모델은 (intly) int이고 SQL 문은 문자열을 반환합니다. 이 이상한 오류 메시지가 나타나면 데이터 유형을 다시 확인하십시오.


인기 답변

원래의 예외를 숨기고 또 다른 예외를 던진 보안 문제가있었습니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.