12

Entity Framework Code First での 1 対多または多対多の関係は、次のようになります。

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<Bar>) にはアップストリームのパブリックまたは保護された呼び出し元がないようです」に違反しています。

防止するために存在する状況はかなり重要なので、ルールをグローバルにオフにしたくありませんが、関係を宣言するたびにローカルでルールを抑制するのはオフに思えます. CA2227に違反しない関係を宣言する方法はありますか?

4

2 に答える 2

5

すべての Code First エンティティを独自のアセンブリに配置し、そのアセンブリのルールを除外します。

于 2012-06-21T14:05:04.000 に答える