C# SQLServerTDE和LINQ

C# SQLServerTDE和LINQ,c#,sql-server,linq,tde,C#,Sql Server,Linq,Tde,我需要使用TDE进行数据保护,并防止DBA看到数据。我们当前的数据访问层使用LINQ访问SQL,而无需TDE。如果数据库转换为带有加密列的TDE,我们必须使LINQ产生如下查询: OPEN SYMMETRIC KEY MyKey DECRYPTION BY PASSWORD = 'mypassword'; SELECT CONVERT(VARCHAR(MAX), DECRYPTBYKEY(MyEncryptedCol)) FROM dbo.MyEncryptedTable; CLOSE SY

我需要使用TDE进行数据保护,并防止DBA看到数据。我们当前的数据访问层使用LINQ访问SQL,而无需TDE。如果数据库转换为带有加密列的TDE,我们必须使LINQ产生如下查询:

OPEN SYMMETRIC KEY MyKey
DECRYPTION BY PASSWORD = 'mypassword';

SELECT CONVERT(VARCHAR(MAX), DECRYPTBYKEY(MyEncryptedCol))
FROM dbo.MyEncryptedTable;

CLOSE SYMMETRIC KEY MyKey;
以最小的工作量转换现有数据层的最佳方法是什么?我更喜欢继续使用LINQ


目前正在使用SQL Server 2012、.Net 4.5、C#

无。你基本上确定了你不能使用easy LINQ,不管是谁想出的,都会因此被解雇

你能做什么-最好-取决于数据层。Yee,LINQ不是一种数据访问技术,它是一种C#集成查询,具体取决于提供程序(Linq2Sql、实体框架、NHibernate),请确保不提供任何信息

不管怎样,您的问题是您需要添加开始和结束sql命令-一些提供程序可以这样做-以及基本上特殊的sql,这只是不起作用

最好的机会是采用开源数据访问提供商(NHibernate,Entity Framework)并对其进行扩展以允许此功能

否则,站在架构师面前,告诉他“嘿,你写了规范——有没有想过你必须准确地确保它们是可行的?”是另一种选择。这实际上是您在这里需要的非标准SQL,并且普通的ORM在未经修改的情况下将不支持它