Dapper 동적 매개 변수는 익명 객체를 사용하지 않을 때 "스칼라 변수를 정의해야합니다"라는 SQLException을 던집니다.

c# dapper sqlexception

문제

(이 코드는 C #에서 Dapper Dot Net을 사용합니다)

이 코드는 작동합니다.

class MyAccount 
{
    public string Name;
    public int Priority;
}

var command = "UPDATE account SET priority_id = @Priority WHERE name = @Name";
var acct = new MyAccount { Name = "helloworld", Priority = 10 };
connection_.Execute(command, acct);

이 코드는 SqlException을 throw합니다.

class MyAccount 
{
    public string Name;
    public int Priority;
}

var command = "UPDATE account SET priority_id = @Priority WHERE name = @Name";
var acct = new MyAccount { Name = "helloworld", Priority = 10 };
connection_.Execute(command, acct);

System.Data.SqlClient.SqlException : "@Priority"스칼라 변수를 선언해야합니다.

왜?

수락 된 답변

필드가 아닌 속성을 사용하여 모델을 구현하십시오.

class MyAccount 
{
    public string Name { get; set; }
    public int Priority { get; set; }
}

Dapper는 필드를 무시하고 매개 변수를 가져 오기 위해 개체의 속성을 확인합니다. 익명 형식은 속성 으로 구현 되기 때문에 작동 합니다 .


인기 답변

이 답변은 포스터의 문제와 관련이 없지만 여기에서 공유 할 다른 수정 사항과 비슷한 문제가있었습니다.

매개 변수 목록을 new []{ ... } 로 잘못 정의했습니다.

connection_.Execute(command, new { priority, name });

[] 해결 된 내 문제 :

connection_.Execute(command, new { priority, name });



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