2012-06-21 13 views
5

1対多または多対多の関係「コレクションのプロパティのみを読まれるべきです」コレクションのプロパティは読み取り専用にする必要があります。 "Entity FrameworkのコードファーストとCA2227 Entity Frameworkのコードファーストは、このようになりますで

セッターが保護作ることに役立ち、それが私的なっていませんが: -

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

は、もちろんCA1811「Foo.Bars.set(ICollectionを<バーを>)違反なし上流国民を持っていないように見えますか保護された発信者 "と呼ぶ。

私はむしろルールをグローバルにオフにしたくないのは、それがかなり重要だからですが、関係を宣言したいときはいつでもローカルでそれを抑制するように見えます。 CA2227に違反しない関係を宣言する方法はありますか?

+0

私は正確に同じ問題を抱えていました。合理的な解決策が見つからないと、私はSuppressMessage()がおそらく最も実用的な方法であると判断しました。 – theDmi

答えて

4

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

+0

正解はBonnerによって提供されています。 –

5
次にあなたのコードを変更し

public class Foo { 
    public Foo() { 
     Bars = new Collection<Bar>(); 
    } 

    public int Id { get; set; } 
    public virtual ICollection<Bar> Bars { get; private set; } 
} 
関連する問題