Entity Framework Code First и CA2227 «Свойства коллекции должны быть доступны только для чтения»

Отношение «один-многие» или «многие-многие» в Entity Framework Code First выглядит следующим образом: —

public class Foo
{
  public int Id { get; set; }
  public virtual ICollection<Bar> Bars { get; set; }
}

Это нарушает правило анализа кода 2227 «Свойства коллекции должны быть доступны только для чтения».

Создание защищенного установщика не помогает, а его приватность:-

public class Foo
{
  public int Id { get; set; }
  public virtual ICollection<Bar> Bars { get; private set; }
}

тогда, конечно, нарушается CA1811 "Foo.Bars.set(ICollection), по-видимому, не имеет вышестоящих общедоступных или защищенных вызывающих объектов".

Я бы предпочел не отключать правило глобально, потому что ситуация, для предотвращения которой оно существует, довольно важна, но отключать его локально каждый раз, когда я хочу объявить отношение, кажется неправильным. Есть ли способ объявить отношения, которые не нарушают CA2227?

9
задан Iain Galloway 21 June 2012 в 13:58
поделиться