2012-06-21 19 views
5

Varlık Framework Kod First Tek ya da çok çok-çok ilişki şöyle "Koleksiyon Özellikleri sadece okunması gereken": -Varlık Framework Kod Birinci ve CA2227

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

Bu Kod Analizi kural 2227 ihlal " Koleksiyon Özellikleri sadece okunmalıdır ".

yardımcı olmuyor korumalı ayarlayıcı yapma ve özel yapım: -

CA1811 "Foo.Bars.set (ıcollection < Bar>) hiçbir memba halkı gibi görünüyor tabii sonra
public class Foo 
{ 
    public int Id { get; set; } 
    public virtual ICollection<Bar> Bars { get; private set; } 
} 

aykırıdır veya korumalı arayanlar ".

Genel olarak kuralı devre dışı bırakmamayı tercih ederim, çünkü önlenmesi gereken durum oldukça önemlidir, ancak bir ilişkiyi bildirmek istediğimde bunu yerel olarak bastıracağım. CA2227'yi ihlal etmeyen ilişkiyi bildirmenin bir yolu var mı?

+0

. Herhangi bir makul çözüm bulamadıktan sonra, SuppressMessage() 'ın belki de en pragmatik yol olduğuna karar verdim. – theDmi

cevap

4

yerleştirin tüm kod, ilk olarak kendi mecliste varlıklar ve birleştirmeye kuralı dahil değildir.

+0

Doğru cevap Bonner tarafından sağlanır. –

5
aşağıdaki kodunuzu değiştirin

: Ben aynı sorunu vardı

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

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