Das von der Dapper-Abfrage zurückgegebene DynamicObject enthält nicht alle ausgewählten Spalten

.net calculated-columns dapper orm sql-server

Frage

Ich benutze dapper.net, um einen Insert wie folgt auszuführen:

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;

Die Abfrage ist erfolgreich, aber eine Ausnahme wird ausgelöst myObj.ComputedValue = columns.ComputedColumn; 'System.Dynamic.DynamicObject' does not contain a definition for 'ComputedColumn'

Wie Sie vielleicht wissen, ist ComputedColumn eine berechnete Spalte in der Tabelle, weshalb ich sie nach dem Einfügen zusammen mit der ID zurückgebe. Irgendeine Idee, warum das scheitern würde?

Akzeptierte Antwort

Ich habe es herausgefunden - ich hatte einen Einfügetrigger auf diesem Tisch. Der Trigger hat die Id zurückgegeben, um mit Entity Framework (das ich seitdem auf Dapper umgestellt habe) nett zu spielen. SELECT Id, ComputedColumn FROM MyTable WHERE Id = scope_identity() tatsächlich nicht einmal eine Zeile zurückgegeben, aber dapper hat die vom Trigger zurückgegebene SELECT Id, ComputedColumn FROM MyTable WHERE Id = scope_identity() korrekt SELECT Id, ComputedColumn FROM MyTable WHERE Id = scope_identity() . Der Trigger wurde geändert, um Id und ComputedColumn zurückzugeben, und alles funktioniert super!



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum