더 이상 쿼리로 반환 된 DynamicObject에 선택한 모든 열이 포함되어 있지 않습니다.

.net calculated-columns dapper orm sql-server

문제

dapper.net을 사용하여 다음과 같이 삽입을 실행합니다.

var columns = conn.Query("INSERT INTO MyTable" +
                   "(Col1, Col2, Col3)" +
                   "VALUES (@Col1, @Col2, @Col3)" +
                   "SELECT Id, ComputedColumn FROM MyTable WHERE Id = scope_identity()",
                   myObj).Single();

myObj.Id = columns.Id;
myObj.ComputedValue = columns.ComputedColumn;

쿼리가 성공하지만 myObj.ComputedValue = columns.ComputedColumn; 에서 예외가 throw됩니다 myObj.ComputedValue = columns.ComputedColumn; 'System.Dynamic.DynamicObject' does not contain a definition for 'ComputedColumn'

수집 한 것처럼 ComputedColumn은 테이블의 계산 된 열입니다. 따라서이 ID와 함께 삽입 한 후 반환합니다. 왜 이것이 실패 할까?

수락 된 답변

그것을 알아 내었습니다.이 테이블에는 삽입 대신 트리거가있었습니다. 트리거는 Entity Framework에서 멋지게 플레이하기 위해 이드를 반환했습니다. SELECT Id, ComputedColumn FROM MyTable WHERE Id = scope_identity() 는 실제로 행을 반환하지 않았지만, dapper가 트리거에 의해 반환 된 Id를 올바르게로드하고있었습니다. Id 및 ComputedColumn을 반환하는 트리거가 변경되었으며 모든 것이 잘 작동합니다!




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