2017-04-12 3 views
2

J'ai ce projet .Net Framework 4.0. J'ai ajouté System.Data comme référence. J'essaye de construire une chaîne de connexion avec un DbConnectionStringBuilder, au lieu d'utiliser directement une chaîne..NET4.0 Propriétés de ApplicationIntent et MultiSubnetFailover manquantes de SqlConnectionStringBuilder

 var mssqlcsb = new System.Data.SqlClient.SqlConnectionStringBuilder() 
     { 
      DataSource = @"(localdb)\MSSQLLocalDB", 
      InitialCatalog = "test", 
      IntegratedSecurity = true, 
      ConnectTimeout = 30, 
      Encrypt = false, 
      TrustServerCertificate = true, 
      //ApplicationIntent = ApplicationIntent.ReadWrite, 
      //MultiSubnetFailover = false 
     }; 

Erreur code: CS0117. Description: 'SqlConnectionStringBuilder' ne contient pas de définition pour 'ApplicationIntent'.

Vous cherchez des métadonnées pour la classe, la résolution de C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ System.Data.dll, confirme qu'il n'y a pas cette propriété.

Cependant, ApplicationIntent est une propriété pour SqlConnectionStringBuilder sur MSDN. Même problème pour MultiSubnetFailover.

Est-ce que quelque chose me manque, est-ce que MSDN manque quelque chose ou est-ce que System.Data manque quelque chose?

Répondre

2

Les deux sont disponibles en tant que propriété, mais uniquement avec .NET 4.5 ou supérieur. Ce n'était pas là dans .NET 4.0.

Vous pouvez facilement voir cela. Créez un projet d'application console, par exemple, dans VS.

Collez le code suivant dans la méthode Main:

 SqlConnectionStringBuilder b = new SqlConnectionStringBuilder(); 
     b.ApplicationIntent = ApplicationIntent.ReadOnly; 

Le feu aux paramètres du projet et modifiez le paramètre « Cadre cible » à l'une des options suivantes (en fonction de ce que vous avez installé et ce que VS la version yo utilisez):

  • Framework 4 (=> erreur de compilation)
  • Framework 4.5 (compile)
  • .NET Framewo rk (4.5.1) compiles
  • ...

Vous pouvez aussi voir qu'en regardant this document:

Les propriétés de connexion suivantes ont été ajoutées à SqlClient dans .NET Framework 4.5:

  • ApplicationIntent

Modifiez votre infrastructure cible en .NET 4.5 ou mieux, si vous le pouvez (c.-à-d. tous les déploiements de votre application prennent en charge cela). Ou, comme solution de contournement, ajouter ces propriétés manuellement à la chaîne de connexion générée:

var mssqlcsb = new System.Data.SqlClient.SqlConnectionStringBuilder() 
... 
string connectionString = mssqlcsb.ConnectionString + ";ApplicationIntent=ReadWrite"; 
+0

Évidemment, les documents MSDN pour 4.0 ne sont pas précis. C'est la divergence qui m'intéressait, pas la concaténation des cordes :) –

0

« ApplicationIntent » n'est pas disponible dans .NET Framework 4.0, est disponible à partir de .Net 4.5 et au-dessus.

Basculez votre version du framework d'application vers .Net 4.5.