DbContext не является конструктивным

asp.net-mvc-5 c# dbcontext entity-framework-6

Вопрос

Я только начал играть с MVC5, уже имея достаточное количество воздействия на MVC4.

Во-первых, я решил вызвать ApplicationUser в своем приложении UserProfile (так что UserProfile наследуется от IdentityUser). Я также хочу иметь один DbContext, поэтому отношения между UserProfile и другими объектами легко используются. Эта ошибка возникает с строкой соединения или без нее (ни одна строка соединения не создает файл mdd localdb).

База данных строилась, но она продолжала называть базу данных DefaultConnection, хотя строка подключения и т. Д. Не была названа этой. Я понял, что не передал строку подключения в свой DbContext ctor. Затем я изменил это, чтобы передать namer строки соединения в ctor моего файла DbContext. Поскольку я делаю это, я могу получить эту ошибку.

Целевой контекст «Mesanderson.Infrastructure.DatabaseConfig.MesandersonDb» не является конструктивным. Добавьте конструктор по умолчанию или выполните реализацию IDbContextFactory.

С Migrations, установленным в моем проекте данных, у меня есть эта структура

Настроить файл базы данных, InitializeDatabase вызванный из Global.asax

public class ConfigureDatabase
{
    public void InitializeDatabase()
    {
        Database.SetInitializer<Infrastructure.DatabaseConfig.MesandersonDb>(new Infrastructure.DatabaseConfig.DatabaseInitializer());
    }
}

Файл инициализации

public class ConfigureDatabase
{
    public void InitializeDatabase()
    {
        Database.SetInitializer<Infrastructure.DatabaseConfig.MesandersonDb>(new Infrastructure.DatabaseConfig.DatabaseInitializer());
    }
}

Файл конфигурации миграции (автоматическая миграция во время разработки)

public class ConfigureDatabase
{
    public void InitializeDatabase()
    {
        Database.SetInitializer<Infrastructure.DatabaseConfig.MesandersonDb>(new Infrastructure.DatabaseConfig.DatabaseInitializer());
    }
}

Наконец, файл DbContext

public class ConfigureDatabase
{
    public void InitializeDatabase()
    {
        Database.SetInitializer<Infrastructure.DatabaseConfig.MesandersonDb>(new Infrastructure.DatabaseConfig.DatabaseInitializer());
    }
}

(incase important) Я также заменил код OOTB на контроллере учетной записи, чтобы использовать фабрику UserManager, поскольку я не хочу, чтобы имена строк соединений использовались по всему приложению.

public class ConfigureDatabase
{
    public void InitializeDatabase()
    {
        Database.SetInitializer<Infrastructure.DatabaseConfig.MesandersonDb>(new Infrastructure.DatabaseConfig.DatabaseInitializer());
    }
}

В любом месте, о котором я рассказывал, ошибка связана с тем, что в DbContext нет никакого бездействия ctor, но у меня это есть.

Принятый ответ

Предложение, принятое OP как ответ:

Попробуйте сделать свой класс и конструктор public а не internal .




Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему