Possible de récupérer l'IDENTITÉ de la valeur de la colonne à insérer à l'aide de SqlCommandBuilder (sans l'aide de procédures Stockées)?

Pour info: je suis en cours d'exécution sur dotnet 3.5 SP1

Je suis en train de récupérer la valeur d'une colonne d'identité dans mon dataset après avoir effectué une mise à jour (à l'aide d'un SqlDataAdapter et SqlCommandBuilder).
Après l'exécution de SqlDataAdapter.Mise à jour(myDataset), je veux être en mesure de lire les auto-assignée valeur de myDataset.tables(0).Rows(0)("ID"), mais c'est le Système.DBNull (malgré le fait que la ligne a été insérée).

(Note: je ne veux pas écrire explicitement une procédure stockée pour ce faire!)

Une méthode souvent posté http://forums.asp.net/t/951025.aspx modifie le SqlDataAdapter.InsertCommand et UpdatedRowSource comme suit:

SqlDataAdapter.InsertCommand.CommandText += "; SELECT MyTableID = SCOPE_IDENTITY()"
InsertCommand.UpdatedRowSource = UpdateRowSource.FirstReturnedRecord

Apparemment, cela semblait fonctionner pour beaucoup de gens dans le passé, mais ne fonctionne pas pour moi.

Une autre technique: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=619031&SiteID=1 ne fonctionne pas pour moi non plus, comme après l'exécution de la SqlDataAdapter.Mise à jour, le SqlDataAdapter.InsertCommand.Collection de paramètres est remis à l'original (perte de la ajoutée supplémentaire en paramètre).

Personne ne connais la réponse???

Juste pour les références: Le Projet de Code de l'article "à l'Aide de SCOPE_IDENTITY avec CommandBuilder et DataAdapter" est la solution qui m'a aidé. (Je suis pas de l'auteur de l'article).
Je sais que c'est vieux, mais dans vs 2015 c'est encore très buggé. J'ai eu le même problème et était déjà à l'aide du code à partir de l'article ci-dessus. Pour moi la solution était de le renommer "set ID pour SCOPE_IDENTITY()" à "SCOPE_ID = SCOPE_IDENTITY()" Oui, je sais il n'y a pas de réelle différence, mais maintenant il fonctionne de nouveau pour une raison quelconque

OriginalL'auteur tbone | 2008-09-25