ダッパークエリによって返されたDynamicObjectに、選択したすべての列が含まれていない

.net calculated-columns dapper orm sql-server

質問

私は次のように挿入を実行するために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'と言っ'System.Dynamic.DynamicObject' does not contain a definition for 'ComputedColumn'

あなたが集めたかもしれないように、ComputedColumnはテーブル上の計算列です。なぜなら、私はそれをIdの後に挿入したからです。なぜこれが失敗するのか?

受け入れられた回答

私はこのテーブルの代わりに挿入トリガーを持っていました。トリガがIdを返すことで、Entity Framework(これを私は大胆に切り替えました)とうまくやっています。 SELECT Id, ComputedColumn FROM MyTable WHERE Id = scope_identity()は実際に行を返すこともなく、dapperがトリガによって返されたIdを正しくロードしていました。 IDとComputedColumnを返すようにトリガーを変更しました。



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ