2012-06-01 2 views
0

J'utilise dapper.net pour exécuter un insert comme suit:DynamicObject retourné par requête pimpant ne contient pas toutes les colonnes sélectionnées

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 levée à myObj.ComputedValue = columns.ComputedColumn; dire 'System.Dynamic.DynamicObject' does not contain a definition for 'ComputedColumn'

Comme vous avez pu le constater, 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?

+0

Pouvez-vous poster votre structure de table? – Lamak

Répondre

1

Je l'ai trouvé - j'avais un déclencheur à la place de l'insert sur cette table. Le déclencheur renvoyait l'Id afin de bien jouer avec Entity Framework (que j'ai depuis changé pour dapper). SELECT Id, ComputedColumn FROM MyTable WHERE Id = scope_identity() ne retournait même pas une ligne, mais Dapper chargeait correctement l'ID retourné par le déclencheur. Changé le déclencheur pour retourner Id et ComputedColumn et tout fonctionne très bien!

Questions connexes