在Entity Framework Code First中,一对多或多对多关系如下所示:
public class Foo
{
public int Id { get; set; }
public virtual ICollection<Bar> Bars { get; set; }
}
这违反了Code Analysis规则2227“集合属性应该是只读的”。
将setter方法设置为protected并不能解决问题,将其设置为private也不行:
public class Foo
{
public int Id { get; set; }
public virtual ICollection<Bar> Bars { get; private set; }
}
然后当然会违反CA1811规则,即"Foo.Bars.set(ICollection<Bar>)似乎没有任何上游公共或受保护的调用方"。
我不想全局关闭该规则,因为它存在的情况相当重要,但每次声明关系时都局部禁止它似乎不太合适。有没有一种方法可以声明关系而不违反CA2227?