[英]Decrypt Data From SQL Server 2008 R2
我需要一些幫助將此過程(見下文)轉換為Entity Framework 4.0。 有沒有人有任何關於如何移植它的建議。 目標項目包括; Silverlight 4,WCF RIA服務,EF 4.0,SQL Server 2008 R2。
我唯一的要求是它需要放在托管代碼中而不是存儲過程中。
Try
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = cn;
cmd.CommandType = CommandType.Text;
string sql = "OPEN SYMMETRIC KEY " + this._encryptKey;
sql += " DECRYPTION BY CERTIFICATE " + this._encrpytCert;
sql += " SELECT TOP (1) CONVERT(nvarchar(50),DECRYPTBYKEY(Field1)) AS Name";
sql += " FROM Table3";
sql += " ORDER BY CONVERT(nvarchar(50),DECRYPTBYKEY(Field1))";
cmd.CommandText = sql;
Name = (String)cmd.ExecuteScalar();
bRtn = false;
}
catch (Exception ex)
{
System.Diagnostics.Debug.Print(ex.ToString());
}
請讓我知道如何設置它並謝謝!
您可以通過Entity Framework運行查詢,並使用ObjectContext.ExecuteStoreQuery<>()
函數獲取強類型結果(請參閱此示例 )。
然而不幸的是,我認為沒有辦法讓你自己生成T-SQL語句。 雖然您可以通過SqlFuntions類在Linq-to-Entities查詢中使用許多SQL Server的函數,但是沒有函數可以轉換SQL Server的DECRYPTBYKEY
函數,更不用說實體框架不會生成一個語句來打開鍵。
要在查詢敏感數據之前解密,您需要做的就是在EF ObjectContext連接中使用DbTransaction。
即
這會強制EF維護相同的數據庫連接,因為您已經啟動了數據庫事務,這是有意義的,因為您可能會執行一大堆SP作為同一數據庫事務的一部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.