EntityFramework集合属性是否需要一个setter

问题描述 投票:3回答:2

使用EntityFramwork(代码优先)对1-n关系建模的常用方法是使用虚拟集合属性,例如:

class Project {
  public virtual ICollection<Remark> Remarks { get; set; }
}

class Remark {
  public virtual int ProjectId { get; set; }
  public virtual Project Project {get; set; }
}

由于Remarks集合最初是null,所以我采用以下方法

  private ICollection<Remark> _remarks;
  public virtual ICollection<Remark> {
    get {
      if (_remarks == null)
        _remarks = new List<Remark>();
      return _remark;
    }
    set {
       _remarks = value;
    }
  }

为了在新创建的Remarks.Add对象上使用Project方法,而无需显式设置属性。

[Afaik EF在内部从我的类派生并覆盖虚拟导航属性以支持延迟加载。

我的问题:是否需要定义集合属性的setter? EF是否需要它?我只想公开getter,让类在内部管理集合。

编辑偶然地,我只是在发帖后才注意到此related question,所以也许只是重复的内容...

.net entity-framework setter navigation-properties
2个回答
6
投票

实体框架可以处理私有成员。您可以为该物业设置私人设置者:


0
投票

据我所见,EF Core也不需要设置器。

© www.soinside.com 2019 - 2024. All rights reserved.