Dapper ORM으로 복잡한 객체 유지

c# dapper

문제

내 Dapper ORM에서 다음과 같은 복잡한 모델을 설정하고 유지하기를 거부합니다.

const string sqlQuery = "INSERT INTO Reports (created_at, post_name) VALUES (@CreatedAt, @PostData.PostName)";
_connection.Execute(sqlQuery, report);

namespace Foobar.Models
{
    public class Report
    {
        public int Id { get; set; }
        public DateTime CreatedAt { get; set; }
        public PostData PostData { get; set; }
    }

    public class PostData
    {
        public string title { get; set; }
        public double index { get; set; }
    }
}

이것은 내가 받고있는 오류입니다 :

The member PostData of type Foobar.Models.PostData cannot be used as a parameter value

수락 된 답변

익명 객체를 사용해보십시오 :

const string sqlQuery =
    "INSERT INTO Reports (created_at, post_name) VALUES (@CreatedAt, @PostName)";

_connection.Execute(sqlQuery, new { CreatedAt = report.CreatedAt,
                                    PostName = report.PostData.PostName });

당신이 가지고있는 문제는 당신이 효과적으로 전달하려고하는 것입니다 PostData 라는 SQL 매개 변수의 값으로 객체를 PostData.PostName .

"@parameter" 구문은 Dapper 자체의 기능이 아니라 원시 SQL이라는 점에 유의하십시오. SQL 매개 변수 이름을 전달한 오브젝트에 대한 표현식으로 해석하는 것과 관련된 맵핑 프로세스의 단계는 없습니다. 매핑은 단순히 매개 변수 이름을 속성 이름과 일치시키고 전달한 객체에서 해당 값을 삽입하여 작동합니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow