我正在与EF Code First项目合作,一切都很好。我有一个简单的类(class),客户。在我的客户类中,我有一个要加密的字段(是的,我知道我可以在数据库级别加密,但是要求指示我要在域/代码级别加密),所以我希望可以做以下事情:

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

但是,我假设如果 setter 具有定义,则在生成架构时, Entity Framework 代码首先可能会忽略该属性。所以我的问题是,有没有一种方法可以使用提供的getter/setter进行EF Code First,还是应该将此功能移入构造函数中?我应该覆盖保存上下文时发生的方法/事件之一吗?

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

注意,我正在使用DataService通过OData协议(protocol)服务传输数据。这将自动生成插入/更新/选择方法。一些建议需要创建第二个属性,但是DataService类似乎没有通过NotMapped属性传递。这使我先前的问题有点纠结。

最佳答案

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

关于c# - Entity Framework 代码首先,非空的setter或getter?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14695161/

10-13 09:15