9

私は EF Code First プロジェクトに取り組んでいますが、すべて順調です。私は単純なクラス、顧客を持っています。私の Customer クラスには、暗号化したいフィールドがあります (はい、DB レベルで暗号化できることはわかっていますが、要件により、ドメイン/コード レベルで暗号化する必要があります)、次のようなことができることを望んでいます。

public class Customer
{
    public int CustomerID { get; set; }      
    public string FieldToEncrypt { get; set { _FieldToEncrypt = MyEncryptionFunction.Encrypt(); } }
}

ただし、セッターに定義がある場合、スキーマを生成するときにエンティティ フレームワーク コードが最初にそのプロパティを無視する可能性があると思います。私の質問は、提供されたゲッター/セッターを使用して EF Code First を実行する方法はありますか、それともこの機能をコンストラクターに移動する必要がありますか? 代わりに、コンテキストが保存されているときに発生するメソッド/イベントの 1 つをオーバーライドする必要がありますか?

編集* ** * ** * ** * ** * ** * ****

注として、私は DataService を使用して、OData プロトコル サービスを介してデータを送信しています。これにより、insert/update/select メソッドが自動的に生成されます。いくつかの提案では 2 番目のプロパティを作成する必要がありますが、DataService クラスは NotMapped プロパティを通過していないようです。これは、私の以前の質問に少しねじれを投げかけます。

4

1 に答える 1

5
public class Customer 
{
    public int CustomerID { get; set; }        
    public string EncryptedField { get; private set; }

    [NotMapped]
    public string Field
    {
        get { return MyEncryptionFunction.Decrypt(EncryptedField); }
        set { EncryptedField = MyEncryptionFunction.Encrypt(value); }
    } 
}
于 2013-02-04T21:01:46.550 に答える