2017-04-10 3 views

Répondre

0

En ce qui concerne la façon dont le fournisseur de données .NET Framework gère ce - il n'y a rien que vous devez faire en particulier si l'objet sous-jacent est un SqlParameter.

Plus de détails à ce sujet: Develop using Always Encrypted with .NET Framework Data Provider

Le fournisseur de données .NET Framework pour SQL Server détecte automatiquement les paramètres et encrypte qui ciblent les colonnes cryptées.

Je suppose que vous utilisez la bibliothèque d'entreprise. En regardant la méthode AddInParameter - il crée en interne un DbParameter et SqlParamter hérite de DbParameter. Il semble que les mêmes règles s'appliqueraient dans votre cas.

Cela dit, vous pouvez revenir à l'aide de la bibliothèque d'entreprise en faveur de ADO.NET droite, Entity Framework, ou un micro ORM comme Dapper. Au meilleur de ma connaissance, la bibliothèque d'entreprise n'est pas un projet actif/maintenu.

Modifier

Semble vous pouvez passer un SqlParameter au dbcommand.

Exemple (non testé)

  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); 
+0

Merci William, mais le code existant utilisé la bibliothèque de l'entreprise nous ne largement et maintenant veulent changer le code entier juste cryptage. est-ce quelque chose qu'il n'y a aucun moyen de rendre la colonne Toujours cryptée fonctionne avec la bibliothèque d'entreprise? – Windows10

+0

SqlParameter hérite de DbParameter. Donc ça devrait marcher. En outre, il semble que vous pouvez passer un paramètre SqlParameter à la commande db. Bien que vous devriez le tester. J'ai édité ma réponse. –