9

我正在使用 EF Code First 项目,一切都很好。我有一个简单的类,客户。在我的客户类中,我有一个要加密的字段(是的,我知道我可以在数据库级别加密,但要求我在域/代码级别进行加密),所以我希望我可以执行以下操作:

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

但是,我假设如果 setter 有定义,实体框架代码首先可能会在生成模式时忽略该属性。所以我的问题是,有没有办法使用提供的 getter/setter 执行 EF Code First,或者我应该将此功能移动到构造函数中?我应该覆盖保存上下文时发生的方法/事件之一吗?

编辑* ** * ** * ** * ** * ** * ****

作为说明,我使用 DataService 通过 OData 协议服务传输数据。这会自动生成插入/更新/选择方法。一些建议需要创建第二个属性,但 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 回答