1

Есть ли возможность использовать DapperORM с (Azure) SQL 2016 Всегда зашифровано? Есть ли какая-либо документация по использованию и передовой практике?Как использовать Azure Sql всегда зашифрован с помощью ORM?

особенно как обращаться с новым направлением ввода параметров и длиной ввода?

ответ

1

Следующие ссылки помогут вам начать работу с Always Encrypted.

Я не использовал Dapper ORM, но, до тех пор, пока у вас есть возможность включить всегда шифруются с помощью строки подключения и параметрирования ваших литералов вы должны быть хорошо ,

Вот пример, который я пробовал. Примечание Column Encryption Setting=Enabled в строке соединения, которая позволяет всегда зашифровать для данного соединения.

private static readonly string connectionString = @"Data Source=.;Initial Catalog=dbName;Integrated Security=true;Connection Timeout=60;Column Encryption Setting=Enabled"; 

static void Main(string[] args) 
{ 
    using (SqlConnection conn = new SqlConnection(connectionString)) 
    { 
     conn.Open(); 

     int id = 1; 
     var dog = conn.Query<Dog>("select age, name, weight, idcol from DogTable where idcol = @Id", new { Id = id }); 
    } 
} 

public class Dog 
{ 
    public int? age { get; set; } 
    public int idcol { get; set; } 
    public string name { get; set; } 
    public float? weight { get; set; } 

    public int IgnoredProperty { get { return 1; } } 
} 
0

Чтобы добавить ответ Нихилу, это возможно, и ресурсы, он приводит полезны, однако параметризация статья может быть немного вводит в заблуждение, я включу фрагмент кода, который я только что получил, работая в случае помогает. Вам не нужно использовать DECLARE @SSN ... в вашем sql, как в SSMS, удар работает просто отлично для меня, как только я исправил проблемы с типом (см. Параграф после блока кода).

string sql = "SELECT * from dob.ExampleTable WHERE IsActive = 1 SSN = @SSN"; 

var results = await this.DbConnection.QueryAsync(sql, new 
{ 
    SSN = 999999999 
}); 

Также следите за несоответствующими типами данных. Мне не удалось заставить char или varchar работать в качестве целевого типа для моего столбца SSN с помощью Dapper (я смог использовать прямой ADO.NET, настраивая столбец явно как CHAR или VARCHAR, но Dapper, похоже, считает NVARCHAR (4000) для всей строки поля, что привело к ошибке с использованием Dapper). NVARCHAR и NCHAR отлично работали. Я думаю, что это связано с тем, что когда вы шифруете столбец, он меняет «реальный» тип данных на NCHAR (50) и что-то о преобразовании dapper из nvarchar (4000) => CHAR (9) => NCHAR (50) не работал, а только в Dapper.