为EF Code First模型实体提供属性的自定义Setter

13 entity-framework ef-code-first

是否可以在EF Code First方法中覆盖或添加实体模型对象的属性设置器的代码.

例如

public class Contact
{
    [Key]
    public int Id { get; private set; }

    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string JobTitle
    {
        get;
        set { // eg. proper case the job title }
    }

}
Run Code Online (Sandbox Code Playgroud)

我曾经尝试过一个标记为NotMapped的公共属性,并设置/获取私有/受保护属性.但似乎该财产必须公开才能在表格中创建.

dmu*_*ial 13

如果需要,可以在那里编写逻辑,只需将属性转换为非自动属性,然后像使用普通属性一样执行检查.

 private string jobTitle;
 public string JobTitle
 {
      get { return jobTitle; }
      set
      {
           // do your fancy stuff or just jobTitle = value
      }
 }
Run Code Online (Sandbox Code Playgroud)

请记住,如果您在setter中更改db的值,那么在执行SaveChanges()上下文后,它可能会以后的方式保存.