0

我正在使用 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 是表上的一个计算列,这就是为什么我在插入后将它与 Id 一起返回的原因。知道为什么这会失败吗?

4

1 回答 1

1

想通了——我在这张桌子上有一个代替插入的触发器。触发器正在返回 Id,以便与 Entity Framework(我已经切换到 dapper)一起玩得很好。 SELECT Id, ComputedColumn FROM MyTable WHERE Id = scope_identity()实际上甚至没有返回一行,但是 dapper 正确加载了触发器返回的 Id。将触发器更改为返回 Id 和 ComputedColumn,一切正常!

于 2012-06-01T19:25:59.060 回答