.NET SqlConnection et SqlCommand

.net dapper sql sqlcommand sqlconnection

Question

J'utilise les classes SqlConnection et SqlCommand dans mon projet avec Dapper ORM mais j'ai un problème étrange. Quand j'utilise SqlCommand pour insérer une ligne dans une table de base de données, cela fonctionne toujours correctement et quand je sélectionne des tables de données mises à jour, tout va bien, mais les modifications apportées ne sont pas validées. Par exemple, j'ai créé un tableau simple avec seulement deux colonnes (UserId (PK) et UserName (Unique)) et même dans ce cas, les modifications ne sont pas enregistrées. J'utilise le code suivant pour insérer une ligne:

using (SqlConnection c = new SqlConnection(Settings.Default.UsersConnectionString))
        {
            c.Open();


            using (SqlCommand d = new SqlCommand())
            {
                d.CommandText = "INSERT INTO Users (UserName) VALUES ('SomeName')";
                d.CommandType = System.Data.CommandType.Text;
                d.Connection = c;
                int t = d.ExecuteNonQuery();
            }


            c.Close();
        }

Réponse populaire

Ce code dans dapper devrait être:

var name = "SomeName";
int t  = c.Execute("INSERT INTO Users (UserName) VALUES (@name)", new {name});

Dapper ne gère pas les transactions internes, il doit être transmis à l'aide du paramètre de transaction facultatif.

Mon instinct me dit que vous vous connectez à une base de données différente pour insérer les données. Soit celui des transactions implicites de Damiens, facile à valider.




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