web-dev-qa-db-fra.com

Impossible de localiser la référence System.Data.SqlClient

J'ai une nouvelle installation de Visual Studio 2017 Professional. Je crée une application de console POC rapide à l'aide de .NET 4.7.1 et je ne parviens pas à trouver la référence pour System.Data.SqlClient.

J'ai parcouru mon système et trouvé 4 versions de System.Data.SqlClient.dll, mais aucune n'est correcte et ne se compilera pas. J'ai également essayé d'utiliser System.Data, mais aucune référence à SqlClient ne se trouve à l'intérieur. J'ai ajouté manuellement la DLL/référence pour System.Data, mais je n'ai pas non plus résolu le problème de référence.

Mon application est vraiment simple pour le moment, et elle ne sera PAS compilée en raison de cette référence manquante.

Quelles étapes dois-je faire pour résoudre ce problème?

using System;
using System.Data;
using System.Data.SqlClient;

namespace ConsoleApp1
{
    class Database
    {
        public void Start()
        {

            string connString = @"server=(local);initial     catalog=MyDatabase;Integrated Security=SSPI;";
            using (SqlConnection conn = new SqlConnection(connString))
            {
                conn.Open();
                using (SqlCommand cmd = new SqlCommand("SELECT TOP 10 ID, Name FROM TableA", conn))
                {
                    using (SqlDataReader reader = cmd.ExecuteReader())
                    {
                        while(reader.Read())
                        {
                            Console.WriteLine("ID: [{0}], Name: [{1}]", reader.GetValue(0), reader.GetValue(1));
                        }
                    }
                }
            }
        }
    }
}
6
Allan L

dotnet add package System.Data.SqlClient

8
Jorge Candeias

Il vous suffit d'ajouter une option de référence dans l'Explorateur de solutions et après cela, si cela ne fonctionne pas, vous devez changer la bibliothèque de classes en utilisant ".net framework" en dehors de ".net standard"

2
Parag Jain

Dans mon cas, j'ai eu un problème subtil différent des autres réponses. La référence a été ajoutée mais elle avait un triangle jaune, ce qui signifie que j'ai eu un problème avec la référence.

J'ai dû le supprimer de la liste déroulante des références

Assembly references

et réinstallez le package avec

Package-Update System.Data.SqlClient -Reinstall

Ensuite, il a ajouté la bonne référence.

J'ai séparé mes cheveux pendant deux jours parce que je savais que j'avais la référence, mais je n'ai jamais remarqué qu'ils avaient le triangle jaune.

Je pensais que ce n'était qu'un problème de version non compatible, mais en utilisant des redirections de liaison sur web.config où en vain.

C'est alors que j'ai réalisé que System.Data.SqlClient.dll n'était pas copié dans mon dossier bin. C'était à cause de la mauvaise référence de l'Assemblée. Je ne sais pas comment cette référence a été corrompue.

1
Reuel Ribeiro

Veuillez vérifier votre version de SQL Server sur votre ordinateur, il se peut que plusieurs versions de SQL Server Express soient installées sur votre ordinateur. Veuillez essayer de vous connecter (localdb)/MSSQLLOCALDB à partir de votre studio de gestion et si vous pouvez ouvrir, essayez de mettre à jour la connexion dans votre programme et réessayez.

0
Bharath