始终在实体框架核心支持中加密

时间:2018-06-11 23:02:32

标签: c# entity-framework-core always-encrypted

自EF Core 2.1起,尚不支持Always Encrypted SQL Server功能。

我正在使用SQL Server 2016和Azure SQL,并且所有客户端都是基于Windows的。

  • 我们可以使用ADO.NET来实现这一目标,同时等待实现该功能吗?
  • 是否有任何第三方NuGet或付费组件这样做?
  • 在等待EF团队实施的情况下,如何使用.NET Core 2.1加密数据库中的少数几列而不使用我自己的算法?

2 个答案:

答案 0 :(得分:1)

不要扮演自己的实施角色。我们最终要做的是在我们的解决方案中创建一个单独的Windows Classic Desktop类库项目,该项目处理具有加密列的表的数据层。在该项目中,我们将Dapper用于ORM,它支持加密列。确实限制了我们可以做的某些事情,因为数据层的其余部分是通过EF Core进行的,但是它可以正常工作。

由于您使用的是Azure SQL,因此我还建议您使用Microsoft Azure密钥保管库存储列主密钥。请参阅NuGet程序包Microsoft.SqlServer.Management.AlwaysEncrypted.AzureKeyVaultProvider。 .NET Core也不支持此NuGet程序包。

答案 1 :(得分:1)

.Net Core 3.1现在支持此功能,在较低版本上,您将很难实现它,也可以在此处查看有关在.Net Core 3.1上实现它的答案: SQL Server Always Encrypted with .NET Core not compatible

请参阅此github问题/评论 https://github.com/dotnet/SqlClient/issues/11#issuecomment-520100830

要澄清一下:Microsoft.Data.SqlClient应该在.Net Core 3.1上使用