DynamicObject, возвращаемый dapper запросом, не содержит все выбранные столбцы

Я использую 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; выдается исключение, говорящее 'System.Dynamic.DynamicObject' does not contain a definition for 'ComputedColumn'

Как вы могли догадаться, ComputedColumn — это вычисляемый столбец в таблице, поэтому я возвращаю его после вставки вместе с идентификатором. Любая идея, почему это не удастся?


person w.brian    schedule 01.06.2012    source источник
comment
Можете ли вы опубликовать структуру вашей таблицы?   -  person Lamak    schedule 01.06.2012


Ответы (1)


Разобрался - у меня был триггер вместо вставки в этой таблице. Триггер возвращал идентификатор, чтобы хорошо работать с Entity Framework (которую я с тех пор переключил на dapper). SELECT Id, ComputedColumn FROM MyTable WHERE Id = scope_identity() на самом деле даже не возвращал строку, но dapper правильно загружал идентификатор, возвращаемый триггером. Изменил триггер, чтобы он возвращал Id и ComputedColumn, и все отлично работает!

person w.brian    schedule 01.06.2012