2012-06-01 5 views
0

Я использую dapper.net выполнить вставку следующим образом:DynamicObject возвращаемый щеголеватый запроса не содержит все выбранные столбцы

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 - это вычисляемый столбец таблицы, поэтому я возвращаю его после вставки вместе с Id. Любая идея, почему это будет неудачно?

+0

Можете ли вы разместить свою структуру таблицы? – Lamak

ответ

1

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

 Смежные вопросы

  • Нет связанных вопросов^_^