En el video de pluralsight de http://www.asp.net/mvc. El miembro del objeto modelo se cambió a virtual en el medio de un video. No dio una descripción detallada del cambio. ¿Podría alguien elaborar la necesidad?¿Por qué los miembros del objeto de dominio (POCO) se definen como virtuales?
public class Restaurant
{
public virtual int ID { get; set; }
public virtual string Name { get; set; }
public virtual Address Address { get; set; }
public virtual ICollection<Review> Reviews { get; set; }
}
Por cierto, es el IDBContext
en el vídeo siguiente patrón de repositorio? ¿Debería el código usar un patrón de repositorio para las mejores prácticas si no es así?
public interface IDbContext
{
IQueryable<Restaurant> Restaurants { get; }
IQueryable<Review> Reviews { get; }
int SaveChanges();
T Attach<T>(T entity) where T : class;
T Add<T>(T entity) where T : class;
T Delete<T>(T entity) where T : class;
}
Actualización: Debe ser una variedad de patrón de repositorio. Por lo general, el patrón de repositorio crea una clase para un objeto modelo IRepository<T>
. Este puso todo el objeto modelo en una interfaz Restaurants
, Reviews
. ¿Cómo se compara este con el típico?
Un POCO nunca debe ser un objeto de dominio. En su ejemplo, cada entidad es un modelo de PERSISTENCIA, no DOMINIO. Y el patrón de repositorio NO crea una clase para un objeto modelo. Proporciona una abstracción y actúa como una fachada para el acceso de persistencia, en este caso el EF orm. – MikeSW