J'ai un projet et mon projet se connecte à deux bases de données différentes: BookStoreEntities et BlogEntities.Comment utiliser plusieurs bases de données avec Autofac?
Si je supprimer le code de ligne builder.RegisterType<BlogEntities>().As<DbContext>();
dans la configuration Autofac mon projet fonctionne très bien et d'autre je vais obtenir erreur « Le type d'entité livre ne fait pas partie du modèle pour le contexte actuel ».
Ma config autofac:
var builder = new ContainerBuilder();
builder.RegisterControllers(Assembly.GetExecutingAssembly());
builder.RegisterType<BookStoreEntities>().As<DbContext>();
builder.RegisterType<BlogEntities>().As<DbContext>();
builder.RegisterGeneric(typeof(Repository<>)).As(typeof(IRepository<>)).InstancePerDependency();
builder.RegisterType<BookService>().As<IBookService>();
builder.RegisterFilterProvider();
IContainer container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
classe Repository:
public class Repository<T> : IRepository<T> where T : class
{
private DbContext _dbContext;
private DbSet<T> _dbSet;
public Repository(DbContext dbContext)
{
_dbContext = dbContext;
_dbSet = dbContext.Set<T>();
}
public IEnumerable<T> GetAll()
{
return _dbSet;
}
}
couche de service:
public class BookService : IBookService
{
private IRepository<Book> _bookRepository;
public BookService(IRepository<Book> bookRepository)
{
_bookRepository = bookRepository;
}
public IEnumerable<Book> GetBooks()
{
return _bookRepository.GetAll();
}
}
Controller:
public class BookController : Controller
{
private IBookService _bookService;
public BookController(IBookService bookService)
{
_bookService = bookService;
}
// GET: Book
public ActionResult Index()
{
var books = _bookService.GetBooks();
return View(books);
}
}
oui je sais, mais je veux ajouter un contexte qui s'appelle MyDbContext2 et que je vais implémenter dans un référentiel générique. –
C'est une idée étrange mais quel est le problème d'ajouter un autre dbcontexts? – Marusyk
J'ai mis à jour ma question et j'espère si évident pour vous –