.NET4.0 SqlConnectionStringBuilder 缺少 ApplicationIntent 和 MultiSubnetFailover 属性
.NET4.0 SqlConnectionStringBuilder missing ApplicationIntent and MultiSubnetFailover properties
我有这个 .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
};
错误 代码:CS0117。说明:“SqlConnectionStringBuilder
”不包含“ApplicationIntent
”的定义。
正在查找 class 的元数据,解析为 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\System .Data.dll, 确认没有这样的属性。
但是,ApplicationIntent
是 MSDN 上 SqlConnectionStringBuilder
的 属性。 MultiSubnetFailover
.
同样的问题
我是不是遗漏了什么,是 MSDN 遗漏了什么,还是 System.Data 遗漏了什么?
两者均可作为 属性 使用,但仅适用于 .NET 4.5 或更高版本。它在 .NET 4.0 中不存在。
你可以很容易地看到这一点。在 VS 中创建一个控制台应用程序项目。
将以下代码粘贴到 Main
方法中:
SqlConnectionStringBuilder b = new SqlConnectionStringBuilder();
b.ApplicationIntent = ApplicationIntent.ReadOnly;
转到项目设置并将 "Target Framework" 设置更改为以下任何一项(取决于您安装的内容和您使用的 VS 版本):
- .NET Framework 4(=> 编译错误)
- .NET Framework 4.5(编译)
- .NET Framework 4.5.1(编译)
- ...
您还可以通过查看 this 文档来了解:
The following connection properties were added to SqlClient in .NET Framework 4.5:
- ApplicationIntent
如果可以,请将您的目标框架更改为 .NET 4.5 或更高版本(即您的应用程序的所有部署都支持这一点)。或者,作为解决方法,将这些属性手动添加到生成的连接字符串中:
var mssqlcsb = new System.Data.SqlClient.SqlConnectionStringBuilder()
...
string connectionString = mssqlcsb.ConnectionString + ";ApplicationIntent=ReadWrite";
"ApplicationIntent" 在 .net framework 4.0 中不可用,在 .Net 4.5 及更高版本中可用。
将您的应用程序框架版本切换到 .Net 4.5。
我有这个 .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
};
错误 代码:CS0117。说明:“SqlConnectionStringBuilder
”不包含“ApplicationIntent
”的定义。
正在查找 class 的元数据,解析为 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\System .Data.dll, 确认没有这样的属性。
但是,ApplicationIntent
是 MSDN 上 SqlConnectionStringBuilder
的 属性。 MultiSubnetFailover
.
我是不是遗漏了什么,是 MSDN 遗漏了什么,还是 System.Data 遗漏了什么?
两者均可作为 属性 使用,但仅适用于 .NET 4.5 或更高版本。它在 .NET 4.0 中不存在。
你可以很容易地看到这一点。在 VS 中创建一个控制台应用程序项目。
将以下代码粘贴到 Main
方法中:
SqlConnectionStringBuilder b = new SqlConnectionStringBuilder();
b.ApplicationIntent = ApplicationIntent.ReadOnly;
转到项目设置并将 "Target Framework" 设置更改为以下任何一项(取决于您安装的内容和您使用的 VS 版本):
- .NET Framework 4(=> 编译错误)
- .NET Framework 4.5(编译)
- .NET Framework 4.5.1(编译)
- ...
您还可以通过查看 this 文档来了解:
The following connection properties were added to SqlClient in .NET Framework 4.5:
- ApplicationIntent
如果可以,请将您的目标框架更改为 .NET 4.5 或更高版本(即您的应用程序的所有部署都支持这一点)。或者,作为解决方法,将这些属性手动添加到生成的连接字符串中:
var mssqlcsb = new System.Data.SqlClient.SqlConnectionStringBuilder()
...
string connectionString = mssqlcsb.ConnectionString + ";ApplicationIntent=ReadWrite";
"ApplicationIntent" 在 .net framework 4.0 中不可用,在 .Net 4.5 及更高版本中可用。
将您的应用程序框架版本切换到 .Net 4.5。