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

考え出した - このテーブルには挿入の代わりにトリガーがありました。トリガーは、Entity Framework (その後、dapper に切り替えました) とうまく連携するために Id を返していました。 SELECT Id, ComputedColumn FROM MyTable WHERE Id = scope_identity()実際には行を返していませんでしたが、dapper はトリガーによって返された Id を正しく読み込んでいました。Id と ComputedColumn を返すようにトリガーを変更すると、すべてがうまく機能します。

于 2012-06-01T19:25:59.060 に答える