答えて

1

以下のリンクは、常に暗号化を開始するのに役立ちます。私は限り、あなたは、接続文字列を使用して常に暗号化を有効にすると、あなたは問題ないはずですが、あなたのリテラルをパラメータ化する能力を持っているように、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を使用する必要はありません...あなたのSSMSのように、あなたのタイプの問題(コードブロックの後の段落を参照)を修正した後は、私にとってはうまく動作します。

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

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

また、不一致のデータ型に注意してください。 Dapperを使用してSSN列のターゲット型としてcharまたはvarcharの作業を行うことができませんでした(ストレートADO.NETをCHARまたはVARCHARとして明示的に構成できましたが、Dapperはすべての文字列に対してNVARCHAR(4000)フィールドで、Dapperを使用してエラーが発生しました)。 NVARCHARとNCHARは正常に動作しました。私は、あなたが列を暗号化すると、実際のデータ型をNCHAR(50)に変更し、nvarchar(4000)からのdapperの変換について=> CHAR(9)=> NCHAR (50)は動作していませんでしたが、Dapperだけで動作していました。

関連する問題