始终在 Entity Framework 核心支持中加密

Always Encrypted in Entity Framework Core Support

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

我同时使用 SQL Server 2016 和 Azure SQL,所有客户端都是基于 Windows。

不要扮演你自己的实现。我们最终做的是在我们的解决方案中创建一个单独的 Windows Classic Desktop class 库项目,该项目使用加密列处理 table 的数据层。我们在该项目中将 Dapper 用于 ORM,它支持加密列。它确实限制了我们可以做的一些事情,因为我们的数据层的其余部分是通过 EF Core 但它有效。

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

现在 .Net Core 3.1 支持此功能,在较低版本上您将很难实现它,另请参阅我关于在 .Net Core 3.1 上实现它的回答:

看到这个githubissue/comment https://github.com/dotnet/SqlClient/issues/11#issuecomment-520100830

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