首页 文章

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

提问于
浏览
2

我有这个.Net Framework 4.0项目 . 我添加了 System.Data 作为参考 . 我正在尝试使用 DbConnectionStringBuilder 构建连接字符串,而不是直接使用字符串 .

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

Error 代码: CS0117 . 说明:' SqlConnectionStringBuilder ' does not contain a definition for ' ApplicationIntent ' .

查找该类的元数据,解析为C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ System.Data.dll, confirms there is no such property .

但是, ApplicationIntentMSDNSqlConnectionStringBuilder 的属性 . MultiSubnetFailover 的问题相同 .

我错过了什么,是MSDN丢失的东西还是System.Data缺少的东西?

2 回答

  • 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";
    
  • 0

    .net framework 4.0中没有“ApplicationIntent”,可从.Net 4.5及更高版本获得 .

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

相关问题