azure-sql-database - servicestack sql server 关键字不支持 ormlite
问题描述
我在 api c# 项目中使用 servicestack 并引用了
- 服务栈.ormlite
- servicestack.ormlite.sqlserver
nuget 包。
我可以按预期连接到 sql server。
我们现在尝试在我们的一些 sql server 表列中实现 Always Encrypted 列。我们将以下内容附加到我们的数据库连接字符串中:
";列加密设置=启用"
运行此行时是 c#:
var id = await Db.InsertAsync(customer, selectIdentity: true);
现在引发了一个异常:
"Keyword not supported: 'column encryption setting'."
这可能是因为 Ormlite 包中不支持 Always Encrypted。有没有办法用 ServiceStack 实现类似的东西?
解决方案
这不是 OrmLite 错误,它来自 System.Data.SqlClient ADO.NET 提供程序。
您需要使用ServiceStack.OrmLite.SqlServer.Data包,它确实引用了Microsoft.Data.SqlClient包,如.NET Core 报告的问题所建议的那样。
反编译的源代码显示我们确实引用了Microsoft.Data.SqlClient命名空间:
如果这不起作用,请查看是否可以直接打开与Microsoft.Data.SqlClient SqlConnection 类的连接,例如:
var conn = new SqlConnection(connectionString);
conn.Open();