2017-04-12 107 views
2

我有這個.Net Framework 4.0項目。我添加了System.Data作爲參考。 我正在嘗試構建一個連接字符串與DbConnectionStringBuilder,而不是直接使用字符串。.NET4.0 SqlConnectionStringBuilder缺少ApplicationIntent和MultiSubnetFailover屬性

 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 
     }; 

錯誤代碼:CS0117。說明:'SqlConnectionStringBuilder'不包含'ApplicationIntent'的定義。

仰望的元數據類,解決到C:\ Program Files文件(x86)的\參考大會\微軟\ Framework.NETFramework \ V4.0 \ System.Data.dll中確認不存在這樣的屬性

然而,ApplicationIntentSqlConnectionStringBuilderMSDN的屬性。 MultiSubnetFailover同樣的問題。

我缺少的東西,是MSDN失去了一些東西,或者System.Data失去了一些東西?

回答

2

兩者都可以作爲屬性使用,但只能使用.NET 4.5或更高版本。它不在.NET 4.0中。

你可以很容易地看到。在VS中創建一個控制檯應用程序項目。

Main方法將以下代碼粘貼:

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

轉到項目設置和更改「目標框架」設置爲以下任一(取決於您已經安裝了什麼,什麼VS版本喲正在使用):

  • .NET框架4(=>編譯錯誤)
  • .NET框架4.5(編譯)
  • .NET Framewo RK 4.5.1(編譯)
  • ...

你也可以看到,通過查看this文件:

以下連接屬性添加到的SqlClient在.NET框架4.5:

  • ApplicationIntent

如果可以,將目標框架更改爲.NET 4.5或更高版本(即,您的應用的所有部署均支持此功能)。或者,作爲一種變通方法,手動添加這些屬性來將所生成的連接字符串:

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

顯然4.0的MSDN文檔不準確。這是我感興趣的差異,而不是字符串連接:) –

0

「ApplicationIntent」不是在框架4.0可用,它可從.NET 4.5及以上。

將您的應用程序框架版本切換到.Net 4.5。