DynamicObject renvoyé par la requête dapper ne contient pas toutes les colonnes sélectionnées

.net calculated-columns dapper orm sql-server

Question

J'utilise dapper.net pour exécuter un insert comme suit:

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;

La requête réussit, mais une exception est lancée sur myObj.ComputedValue = columns.ComputedColumn; dire 'System.Dynamic.DynamicObject' does not contain a definition for 'ComputedColumn'

Comme vous l'avez peut-être compris, ComputedColumn est une colonne calculée sur la table, c'est pourquoi je la renvoie après l'insertion avec l'ID. Une idée de pourquoi cela échouerait?

Réponse acceptée

J'ai trouvé un déclencheur au lieu de l'insertion sur cette table. Le déclencheur renvoyait l'ID afin de jouer avec Entity Framework (que j'ai depuis basculé sur dapper). SELECT Id, ComputedColumn FROM MyTable WHERE Id = scope_identity() ne SELECT Id, ComputedColumn FROM MyTable WHERE Id = scope_identity() même pas une ligne, mais dapper chargeait correctement l'id renvoyé par le déclencheur. Changement du déclencheur pour retourner Id et ComputedColumn et tout fonctionne bien!




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi