2010-08-26 36 views
5

Me gustaría utilizar una colección de carga lenta en un modelo, pero quiero agregar/quitar la funcionalidad a través de métodos separados. Entonces algo como esto:Entity Framework Código CTP4 Primero: Asignación de propiedades protegidas

class Model 
{ 
    protected virtual ICollection<Something> _somethings { get; set; } 

    public IEnumerable<Something> Somethings 
    { 
    get { return _somethings; } 
    } 

    public void AddSomething(Something thingToAdd) 
    { 
    /* logic */ 
    _somethings.Add(thingToAdd); 
    } 
} 

No puedo encontrar la manera de configurar el mapeo para esto. Investigué usando una clase de configuración: EntityConfiguration. Pero como la propiedad está protegida, no puedo encontrar la manera de establecer una configuración. ¿Hay alguna manera de lograr lo que estoy tratando de hacer aquí?

+0

¿Podría algo así como una obra de repositorio? –

+0

Supongo que tienes un problema similar al mío: http://stackoverflow.com/questions/3574333/ef-4-0-mapping-to-readonly-property-with-private-field –

Respuesta

0

Supongo que si declaras la clase de configuración (hereda EntityConfiguration) dentro de tu clase de modelo, podría funcionar. No es una buena solución, ya que generalmente se desalienta la subclasificación, pero es lo único que se me ocurre.

0

He oído que esto solo se puede hacer utilizando el modo de archivo EDMX ... no codifica primero.

1

Usted puede usar la expresión de sólo lectura estática para el acceso a la propiedad protegido como éste

protected virtual ICollection<Something> _somesing { get; set; } 
public static readonly Expression<Func<Model, ICollection<Something>>> Expression = p => p._something; 

public IReadOnlyCollection<Something> Something 
{ 
    return _sumething.AsReadOnly(); 
} 

y utilizarla en el método OnModelCreating en clase DbContext de propiedad protegida mapeo

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<Model>().HasMany<Something>(Model.Expression); 
} 
Cuestiones relacionadas