我正在使用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;
会抛出异常myObj.ComputedValue = columns.ComputedColumn;
说'System.Dynamic.DynamicObject' does not contain a definition for 'ComputedColumn'
正如您可能已经收集的那样,ComputedColumn是表上的计算列,这就是我在插入ID之后返回它的原因。知道为什么会失败吗?
想出来 - 我在这张桌子上有一个代替插入的触发器。触发器返回Id以便与Entity Framework(我已经切换到dapper)玩得很好。 SELECT Id, ComputedColumn FROM MyTable WHERE Id = scope_identity()
实际上甚至没有返回一行,但是dapper正确加载了触发器返回的Id。更改了触发器以返回Id和ComputedColumn,一切都很棒!