tengo estas interfaces:Ayuda con Windsor y Repositorio y la Unidad de los patrones de trabajo
public interface IUnitOfWork
{
IPersonRepository People { get; }
IBookRepository Books { get; }
int Commit();
}
public interface IBookRepository
{
Book GetBookById(int id);
IQueryable<Book> GetAllBooks();
}
public interface IPersonRepository
{
Person GetPersonById(int id);
IQueryable<Person> GetAllPeople();
}
implemento IUnitOfWork
de la siguiente manera:
public class SqlUnitOfWork : IUnitOfWork
{
private readonly DbContext dbContext;
public SqlUnitOfWork()
{
dbContext = new DbContext("name=SQLContainer");
}
public IPersonRepository People
{
get { return IoC.Container.Resolve<IPersonRepository>(new { DbContext = dbContext }); }
}
public IBookRepository Books
{
get { return IoC.Container.Resolve<IBookRepository>(new { DbContext = dbContext }); }
}
public int Commit()
{
return dbContext.SaveChanges();
}
}
Las implementaciones de IBookRepository
y IPersonRepository
utiliza un constructor que toma una DbContext
como parámetro, y este DbContext se crea en el SqlUnitOfWork (código anterior) y paso este parámetro utilizando una sobrecarga del método Resolve.
Mi pregunta es, ¿es esta la manera correcta de hacerlo? ¿Es esta una buena practica?
Gracias!
Eche un vistazo a [este artículo] (http://bit.ly/bF7jL3). Muestra un apprac similar. Puede darte algunas ideas. – Steven