Antwort

1

Die folgenden Links helfen Ihnen beim Einstieg in Always Encrypted.

Ich habe nicht Dapper ORM verwendet, aber, solange Sie die Möglichkeit, immer verschlüsselt zu ermöglichen, die Verbindungszeichenfolge und Ihre Literale zu parametrieren Sie sollten in Ordnung sein .

Hier ist eine kurze Probe, die ich ausprobiert habe. Hinweis Column Encryption Setting=Enabled in der Verbindungszeichenfolge, die für die angegebene Verbindung Always Encrypted aktiviert.

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

zu Nikhil Antwort hinzuzufügen, es möglich ist, und die Ressourcen, die er zitiert sind hilfreich, aber die Parametrisierung Artikel könnten ein wenig irreführend, sind ich einen Ausschnitt umfassen würde, dass ich nur für den Fall hätte Arbeit, es hilft. Sie müssen nicht ein DECLARE @ SSN ... in Ihrem SQL verwenden, wie Sie es in SSMS tun würden, der Schlag funktioniert gut für mich, sobald ich meine Probleme mit dem Typ behoben habe (siehe Absatz nach dem Codeblock).

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

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

Achten Sie auch auf nicht übereinstimmende Datentypen. Ich konnte Char- oder Varchar-Arbeit nicht als Zieltyp für meine SSN-Spalte mit Dapper verwenden (ich konnte gerade ADO.NET explizit als CHAR oder VARCHAR konfigurieren, aber Dapper scheint NVARCHAR (4000) für alle Zeichenfolge zu übernehmen) Felder, die mit Dapper zu einem Fehler geführt haben). NVARCHAR und NCHAR haben gut funktioniert. Ich denke, es hat etwas damit zu tun, dass beim Verschlüsseln der Spalte der "echte" Datentyp in NCHAR (50) geändert wird und etwas über die Konvertierung von dapper aus nvarchar (4000) => CHAR (9) => NCHAR (50) funktionierte nicht, sondern nur in Dapper.

Verwandte Themen