ASP.NET vNext EF7 problemas dbContext

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

Pregunta

Estoy empezando un proyecto vNext, y tengo algunos problemas para arrancarlo del suelo. He añadido una tabla a la clase ApplicationDbContext , y creó la tabla con éxito en la base de datos (que en mi caso está en Azure). Sin embargo, parece que no puedo crear correctamente una instancia de dbContext para usar en mis controladores.

En mi experiencia con proyectos anteriores de ASP.NET EF, podría crear una instancia de la clase ApplicationDbContext sin pasarle ningún parámetro, pero en el caso de vNext, sin embargo, parece esperar varias cosas ( IServiceProvider y IOptionsAccessor<DbContextOptions> ). He intentado crear un constructor sin parámetros, pero la aplicación se interrumpe porque no sé qué cadenas de conexión usar. Mi código está abajo: como se ve en la OnConfiguring(DbContextOptions options) , OnConfiguring(DbContextOptions options) la cadena de conexión a través de DbContextOptions , pero obviamente no es lo ideal, y siento que simplemente no entiendo dónde están esos dos IServiceProvider , y Los parámetros de IOptionsAccessor deben provenir de

¡Gracias por cualquier ayuda!

namespace Project.Models
{
    // Add profile data for application users by adding properties to the ApplicationUser class
    public class ApplicationUser : IdentityUser
    {
        public string CompanyName { get; set; }
    }

    public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
    {
        private static bool _created = false;

        public DbSet<Business> Businesses { get; set; }

        public ApplicationDbContext()
            : base()
        {
            if (!_created)
            {
                Database.EnsureCreated();
                _created = true;
            }
        }

        protected override void OnConfiguring(DbContextOptions options)
        {
            var configuration = new Configuration();
            configuration.AddJsonFile("config.json");
            configuration.AddEnvironmentVariables();
            options.UseSqlServer(configuration.Get("Data:DefaultConnection:ConnectionString"));
        }

        public ApplicationDbContext(IServiceProvider serviceProvider, IOptionsAccessor<DbContextOptions> optionsAccessor)
            : base(serviceProvider, optionsAccessor.Options)
        {            
            // Create the database and schema if it doesn't exist
            // This is a temporary workaround to create database until Entity Framework database migrations 
            // are supported in ASP.NET vNext
            if (!_created)
            {
                Database.EnsureCreated();
                _created = true;
            }
        }
    }
}

Respuesta aceptada

IServiveProvider y IOptionAccessor son inyectados por la inyección de dependencia que ASP.Net Core DI tiene limitación, no puede tener más de un constructor.

Lea esto: http://blogs.msdn.com/b/webdev/archive/2014/06/17/dependency-injection-in-asp-net-vnext.aspx




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é