我们可以在插入始终加密的列时使用dbCommand和AddInParameter

时间:2017-04-10 15:06:32

标签: .net enterprise-library daab always-encrypted

我们有什么办法可以使用dbCommand和AddInParameter,同时通过.net将总是加密的列插入到表中?

db.AddInParameter(dbCommand,“@ SSN”,DbType.string,SSN);

1 个答案:

答案 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);