我们有什么办法可以使用dbCommand和AddInParameter,同时通过.net将总是加密的列插入到表中?
db.AddInParameter(dbCommand,“@ SSN”,DbType.string,SSN);
答案 0 :(得分:0)
关于.NET Framework数据提供程序如何处理此问题 - 如果底层对象是SqlParameter,则无需专门执行任何操作。
更多细节: Develop using Always Encrypted with .NET Framework Data Provider
SQL Server的.NET Framework数据提供程序会自动检测 并加密以加密列为目标的参数。
我假设您正在使用企业库。查看AddInParameter方法 - 它在内部创建一个DbParameter,SqlParamter继承自DbParameter。似乎在您的情况下适用相同的规则。
话虽这么说,您可能想重新考虑使用企业库,而不是直接使用ADO.NET,实体框架或像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);