.NET4.0 SqlConnectionStringBuilder缺少ApplicationIntent和MultiSubnetFailover属性

时间:2017-04-12 09:43:35

标签: c# .net ado.net connection-string sqlclient

我有这个.Net Framework 4.0项目。我添加了figure { display: inline-block; margin: 20px; } figure img { vertical-align: top; } figure figcaption { text-align: center; } 作为参考。 我正在尝试使用System.Data构建连接字符串,而不是直接使用字符串。

DbConnectionStringBuilder

错误代码: CS0117 。说明:“ 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 }; ”不包含“SqlConnectionStringBuilder”的定义。

查找该类的元数据,解析为 C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ System.Data.dll 确认没有这样的财产

但是,ApplicationIntentMSDNApplicationIntent的属性。 SqlConnectionStringBuilder的问题相同。

我错过了什么,MSDN是否遗漏了什么或者System.Data缺少了什么?

2 个答案:

答案 0 :(得分:2)

两者都可以作为属性使用,但仅适用于.NET 4.5或更高版本。它在.NET 4.0中没有。

你可以很容易地看到。在VS。中创建一个控制台应用程序项目。

将以下代码粘贴到Main方法中:

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

转到项目设置并更改"目标框架"设置为以下任何一项(取决于您已安装的内容以及您正在使用的VS版本):

  • .NET Framework 4(=>编译错误)
  • .NET Framework 4.5(编译)
  • .NET Framework 4.5.1(编译)
  • ...

您还可以查看this文档:

  

以下连接属性已添加到.NET Framework 4.5中的SqlClient:

     
      
  • ApplicationIntent
  •   

如果可以,请将目标框架更改为.NET 4.5或更高版本(即应用程序的所有部署都支持此功能)。或者,作为解决方法,手动将这些属性添加到生成的连接字符串中:

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

答案 1 :(得分:0)

" ApplicationIntent"在.net framework 4.0中不可用,可从.Net 4.5及以上版本获得。

将您的应用程序框架版本切换到.Net 4.5。