实体框架无法正确打开证书
本文关键字:证书 框架 实体 | 更新日期: 2023-09-27 17:55:15
我有一个打开证书的程序,基本上:
CREATE PROCEDURE [dbo].[SP_OPENCCKEY] WITH EXECUTE AS OWNER AS
OPEN SYMMETRIC KEY CCKEY
DECRYPTION BY CERTIFICATE CERTCC;
不,我不想让我的用户直接打开它。
因此,我正在尝试返回使用该证书解密某些信用卡数据的视图,我只是这样做:
public List<VW_CREDITCARDS> ListCreditCardByPersonID(int PersonId)
{
EntityMgr ent = new EntityMgr ();
ent.ExecuteFunction("SP_OPENCCKEY");
return ent.VW_CREDITCARDS.Where(p => p.PES_IDPERSON== PersonId).ToList();
}
出于某种原因,结果返回 NULL(可能是因为 EF 尚未打开密钥)。
一些提示?
似乎 EF 不是那样工作的。需要在单个命令上返回带有打开的证书的结果。
若要在查询敏感数据之前进行解密,只需在 EF ObjectContext 连接中使用 DbTransaction。
即
- 连接。打开();
- 连接。开始交易();
- 执行您的"打开对称密钥..."命令或存储过程与 ExecuteStoreCommand
- 执行敏感数据查询、存储过程等。
- 如果需要,提交或回滚事务
这会强制 EF 保持相同的数据库连接,因为您已经启动了数据库事务,这是有意义的,因为您可能会执行一大堆 SP 作为同一数据库事务的一部分。
试试看。它对我有用。
蒂亚戈