实体框架代码首先,非空的setter或getter?

时间:2013-02-04 20:36:28

标签: c# entity-framework ef-code-first

我正在使用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属性。这引起我先前问题的一些纠结。

1 个答案:

答案 0 :(得分:4)

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); }
    } 
}