2012-06-21 9 views
5

Una relación de uno a muchos o muchos-muchos en la entidad Código Marco primer lugar se parece a esto: -Entity Framework Primero y CA2227 "Propiedades de la colección deben ser de sólo lectura"

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

Esto viola la regla de análisis de código 2227 " Collection Properties debe leer solo ".

Hacer la incubadora protegida no ayuda, y lo que es privado: -

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

entonces por supuesto viola CA1811 "Foo.Bars.set (ICollection < barra>) no parece tener un público aguas arriba o aguas llamadas protegidas ".

Prefiero no desactivar la regla globalmente porque la situación que existe para evitar es bastante importante, pero suprimirla localmente cada vez que deseo declarar que una relación parece desactivada. ¿Hay alguna manera de declarar la relación que no viola CA2227?

+0

que estaba teniendo el mismo problema. Después de que no encontré ninguna solución razonable, decidí que SuppressMessage() es quizás el camino más pragmático a seguir. – theDmi

Respuesta

4

Coloque todas sus primeras entidades de código en su propio ensamblaje y excluya la regla para ese ensamblaje.

+0

La respuesta correcta es suministrada por Bonner. –

5

cambiar su código a la siguiente:

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

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