Error "Error al establecer el inicializador de base de datos de tipo MyNamespace.MyCustomInitializer, MyAssembly" no se pudo cargar el tipo MyContext

entity-framework entity-framework-6 webforms

Pregunta

Estoy creando una aplicación web utilizando .NET4.5 con Entity Framework 6 alpha3 que usa una nueva base de datos SQL Compact. La base de datos aún no existe.

Tengo el siguiente código en un formulario web:

public IQueryable<Job> listJobs_GetData()
{
    var db = new JournalistContext();
    IQueryable<Job> query = db.Jobs.Where(d => d.JobStart > DateTime.Now)
        .OrderBy(s => s.JobStart)
        .Take(10);
    return query;
}

donde el JournalistContext deriva de DbContext. Crea la instancia de JournalistContext ok, pero cuando ejecuta la siguiente línea, lanza la excepción a continuación. Estoy adivinando que la base de datos no existe, intenta llamar al inicializador, pero esto falla.

public IQueryable<Job> listJobs_GetData()
{
    var db = new JournalistContext();
    IQueryable<Job> query = db.Jobs.Where(d => d.JobStart > DateTime.Now)
        .OrderBy(s => s.JobStart)
        .Take(10);
    return query;
}

Como se describe aquí http://msdn.microsoft.com/en-us/data/jj556606 , he creado un inicializador de base de datos personalizado, que actualmente es una clase en blanco:

public IQueryable<Job> listJobs_GetData()
{
    var db = new JournalistContext();
    IQueryable<Job> query = db.Jobs.Where(d => d.JobStart > DateTime.Now)
        .OrderBy(s => s.JobStart)
        .Take(10);
    return query;
}

Mi archivo web.config hace referencia a este inicializador de la siguiente manera:

public IQueryable<Job> listJobs_GetData()
{
    var db = new JournalistContext();
    IQueryable<Job> query = db.Jobs.Where(d => d.JobStart > DateTime.Now)
        .OrderBy(s => s.JobStart)
        .Take(10);
    return query;
}

¡Estoy perplejo! ¿Algunas ideas?

Otra cosa que he notado: estas líneas han aparecido en mi archivo web.config. No estoy seguro de cómo se agregaron, o por qué.

public IQueryable<Job> listJobs_GetData()
{
    var db = new JournalistContext();
    IQueryable<Job> query = db.Jobs.Where(d => d.JobStart > DateTime.Now)
        .OrderBy(s => s.JobStart)
        .Take(10);
    return query;
}

muchas gracias, mark

Respuesta popular

Mi problema estaba relacionado con mi cadena de conexión.

Hombre, después de probar los siguientes enlaces, no tuve éxito. Estaba intentando conectarme a mi instancia de SQLEXPRESS. Lo intenté:

error al cargar el inicializador de la base de datos con EF6

Restablecer las migraciones de Entity-Framework

Intenta esto en su lugar, esto finalmente funcionó para mí. Reemplace la fuente de datos con su instancia de SqlExpress / SqlServer si no está usando localdb.

Enable-Migrations -ConnectionString "Data Source=.\SQLEXPRESS;Initial Catalog=[your database name];User Id=[your user name];Password=[your password];Integrated Security=SSPI;" -ConnectionProviderName "System.Data.SqlClient" -Force -Verbose

Add-Migration -Name "Initial" -ConnectionString "Data Source=.\SQLEXPRESS;Initial Catalog=[your database name];User Id=[your user name];Password=[your password];Integrated Security=SSPI;" -ConnectionProviderName "System.Data.SqlClient" -Force -Verbose

Update-Database -Force -ConnectionString "Data Source=.\SQLEXPRESS;Initial Catalog=[your database name];User Id=[your user name];Password=[your password];Integrated Security=SSPI;" -ConnectionProviderName "System.Data.SqlClient" -Verbose

Siéntase libre de comentar y puedo seguir intentando ayudar si todavía tiene este problema.

Este fue el recurso que finalmente encontré que me ayudó a entender mucho sobre lo que estoy haciendo.

https://coding.abel.nu/2012/03/ef-migrations-command-reference/




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é