ASP.NET 5 problemas dbcontext múltiples

asp.net asp.net-core c# entity-framework entity-framework-core

Pregunta

Estoy jugando con el nuevo ASP.NET 5 beta 8 y tengo problemas cuando tengo dos dbcontext.

Tengo la siguiente estructura de proyecto.

-Data(Identity 3 db with other entities)
-Resources (Contains a db with translations)
-WebApp 

Elimina algunos códigos en Startup.cs en la aplicación web

-Data(Identity 3 db with other entities)
-Resources (Contains a db with translations)
-WebApp 

En ResourceDbContext y DatabaseContext hago lo siguiente

-Data(Identity 3 db with other entities)
-Resources (Contains a db with translations)
-WebApp 

Sin embargo, cuando leo mis cadenas de conexión de appsettings.json recibo los valores correctos en ConfigureServices. Pero las DbContextOptions solo contienen el último valor cargado, en este caso la cadena de conexión para los Recursos. Entonces, tanto dbcontext establece una conexión a Resource db.

No puedo encontrar ninguna información sobre esto.

Respuesta aceptada

Todo lo que necesita hacer es indicar que DbContextOptions es un tipo genérico:

public ResourceDbContext(DbContextOptions<ResourceDbContext> options) : base(options)
{

}

Ahora el sistema de inyección de dependencias puede encontrar la dependencia correcta ( DbContextOptions options ) en el momento en que crea ResourceDbContext y lo inyecta en el constructor.

Ver implementación del método AddDbContext.


Para Miroslav Siska:

public ResourceDbContext(DbContextOptions<ResourceDbContext> options) : base(options)
{

}

Respuesta popular

¡Gracias por la gran ayuda!

Solución completa:

  public class TenantDbContext : IdentityDbContext<ApplicationUser, IdentityRole, string>
{
    private string _connectionString { get; set; }  

    public TenantDbContext(DbContextOptions<TenantDbContext> options) : base(options)  
    {
        this._connectionString = "Connection String";
    }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    { 
        optionsBuilder.UseSqlServer(_connectionString); 
    }
}

ASP.NET 5 DI trabajando para inyectar DbContext y UserManager al controlador. Ahora es posible iniciar sesión y registrarse con varias bases de datos ... Ahora solo necesito comprobar cómo inyectar la cadena de conexión aquí: this._connectionString = "Cadena de conexión"; Pero es simple ... ¡Gracias de nuevo!




Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué