0

基本的に、証明書を開く手順があります。

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 がキーを開いていないため)。

いくつかのヒント?

4

2 に答える 2

1

機密データのクエリを実行する前に暗号化を解除するには、EF ObjectContext 接続で DbTransaction を使用するだけです。

いえ

  1. connection.Open();
  2. connection.BeginTransaction();
  3. 「OPEN SYMMETRIC KEY...」コマンドまたはストアド プロシージャを ExecuteStoreCommand で実行します。
  4. 機密データのクエリ、ストアド プロシージャなどを実行します。
  5. 必要に応じてトランザクションをコミットまたはロールバックします

これにより、db トランザクションを開始したため、EF は同じ db 接続を維持する必要があり、同じ db トランザクションの一部として一連の SP を実行する可能性があるため、これは理にかなっています。

それを試してみてください。わたしにはできる。

チアゴ

于 2014-06-19T23:23:31.050 に答える
1

EFはそのようには機能しないようです。1 つのコマンドで開かれた証明書を使用して結果を返す必要があります。

于 2013-01-28T09:51:27.480 に答える