2013-10-20 1 views
3

Dapper를 사용하여 Access DB를 업데이트하고 삽입합니다. 코드가 예외를 throw하지 않지만 DB의 값을 업데이트하지 않습니다. 아래는 내 코드입니다Dapper with MS Access 업데이트 및 삽입 문제

sql.Append("UPDATE drugs_repository SET drug_name = @DrugName "); 

sql.Append(" WHERE id = @DrugId"); 

var parameters = new 
{ 
    DrugName = objDrug.DrugName,       
    DrugId = objDrug.DrugId 
}; 
var t = connection.Query<string>(sql.ToString(), parameters); 

누군가 위의 코드에 정확히 무엇이 누락되어 있는지 알려주십시오. DB에서 업데이트보다 값을 하드 코딩 할 때. 아마도 매개 변수와 관련이 있습니다.

+1

문제가 발생했습니다. Dapper의 SqlMapper.cs 파일에서 "// IEnumerable props = type.GetProperties()에서 orderby를 제거했습니다. 여기서 (p => p.GetIndexParameters(). Length == 0) .OrderBy (p => p. 이름);". 그것의 일 벌금. orderby를 제거해도 의미가 있는지 여부는 확실하지 않습니다. 제안을 부탁드립니다. – techknackblogs

+1

+1 잘 했어! ''@DrugName '>'@ DrugId'''는'.OrderBy'가 매개 변수의 순서를 바꾸기 때문에 Access.OLEDB는 매개 변수가 SQL CommandText에 나오는 순서대로 만들어 지도록 요구합니다. –

답변

2

Dapper 코드에서 .OrderBy()을 제거 할 때 발생할 수있는 부작용에 대해 신경이 쓰이는 경우 SQL 명령에 나타나는 순서와 같은 순서로 매개 변수의 이름을 지정하는 것이 좋습니다. 예를 들어 매개 변수의 이름이 @1DrugName@2DrugId 인 경우 수정되지 않은 Dapper 코드가 제대로 작동 할 것으로 판단됩니다.

+0

아이디어에 감사드립니다. 실제로 Dapper의 이전 버전을 사용하고있었습니다. 최신 버전에서는 수정되었습니다. 어쨌든 답장을 보내 주셔서 감사합니다. techknackblogs.com – techknackblogs

+0

주문이 보관되지 않으면 문제가 계속 존재한다고 생각합니다. http://stackoverflow.com/questions/39339478/dapper-with-access-update-statement-partially-not-working – RobinAtTech