Entity Framework Code First 中的一对多或多对多关系如下所示:-
public class Foo
{
public int Id { get; set; }
public virtual ICollection<Bar> Bars { get; set; }
}
这违反了代码分析规则 2227“集合属性应该是只读的”。
使 setter 受保护无济于事,并将其设为私有:-
public class Foo
{
public int Id { get; set; }
public virtual ICollection<Bar> Bars { get; private set; }
}
那么当然违反 CA1811 “Foo.Bars.set(ICollection<Bar>) 似乎没有上游公共或受保护的调用者”。
我宁愿不要在全球范围内关闭该规则,因为它存在的防止情况相当重要,但每次我想声明关系时在本地抑制它似乎是关闭的。有没有办法声明不违反 CA2227 的关系?