我们可以在插入始终加密的列时使用 dbCommand 和 AddInParameter
Can we use dbCommand and AddInParameter while inserting always encrypted columns
有什么方法可以在通过 .net 将始终加密的列插入 table 时使用 dbCommand 和 AddInParameter?
db.AddInParameter(dbCommand, "@SSN", DbType.string, SSN);
关于 .NET Framework 数据提供程序如何处理此问题 - 如果基础对象是 SqlParameter,则您无需特别执行任何操作。
有关此的更多详细信息:
Develop using Always Encrypted with .NET Framework Data Provider
The .NET Framework Data Provider for SQL Server automatically detects
and encrypts parameters that target encrypted columns.
我假设您使用的是企业库。查看 AddInParameter 方法 - 它在内部创建一个 DbParameter,SqlParamter 继承自 DbParameter。似乎相同的规则适用于您的情况。
话虽如此,您可能需要重新考虑使用企业库,转而直接使用 ADO.NET、Entity Framework 或像 Dapper 这样的微型 ORM。据我所知,企业库不是一个活跃的项目/正在维护。
编辑
您似乎可以将 SqlParameter 传递给 dbCommand。
示例(未测试)
DatabaseProviderFactory factory = new DatabaseProviderFactory();
Database db = factory.CreateDefault();
var dbCommand = db.GetStoredProcCommand("spINSERT");
SqlParameter p = new SqlParameter("xxxxxx", "yyyyyy") {SqlDbType = SqlDbType.VarChar};
dbCommand.Parameters.Add(p);
db.ExecuteNonQuery(dbCommand);
有什么方法可以在通过 .net 将始终加密的列插入 table 时使用 dbCommand 和 AddInParameter?
db.AddInParameter(dbCommand, "@SSN", DbType.string, SSN);
关于 .NET Framework 数据提供程序如何处理此问题 - 如果基础对象是 SqlParameter,则您无需特别执行任何操作。
有关此的更多详细信息: Develop using Always Encrypted with .NET Framework Data Provider
The .NET Framework Data Provider for SQL Server automatically detects and encrypts parameters that target encrypted columns.
我假设您使用的是企业库。查看 AddInParameter 方法 - 它在内部创建一个 DbParameter,SqlParamter 继承自 DbParameter。似乎相同的规则适用于您的情况。
话虽如此,您可能需要重新考虑使用企业库,转而直接使用 ADO.NET、Entity Framework 或像 Dapper 这样的微型 ORM。据我所知,企业库不是一个活跃的项目/正在维护。
编辑
您似乎可以将 SqlParameter 传递给 dbCommand。
示例(未测试)
DatabaseProviderFactory factory = new DatabaseProviderFactory();
Database db = factory.CreateDefault();
var dbCommand = db.GetStoredProcCommand("spINSERT");
SqlParameter p = new SqlParameter("xxxxxx", "yyyyyy") {SqlDbType = SqlDbType.VarChar};
dbCommand.Parameters.Add(p);
db.ExecuteNonQuery(dbCommand);