2015-08-11 3 views
1

Я использовал EF много раз, но я не могу понять, почему это происходит.Невозможно создать контекст в EF6

У меня есть решение с двумя проектами, одна из которых является моей общей библиотекой, используемой в нескольких других приложениях, в которых есть все мои сущности, и одна из них - мое приложение консоли обновления. В общей библиотеке у меня есть мой контекст, который выглядит так.

public class DalContext : DbContext 
{ 
    public DalContext() : base(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString) 
    { 
     Database.SetInitializer(new CreateDatabaseIfNotExists<DalContext>()); 
    } 

    public DbSet<UserAccount> UserAccounts { get; set; } 
    public DbSet<GameImport> GameImports { get; set; } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
    } 
} 

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

«ссылка на объект не указывает на экземпляр объекта».

Я использую базовую инструкцию для создания своего контекста, чтобы все было правильно настроено.

using (var db = new DalContext()) 
{ 
    .... 
} 

я получаю сообщение об ошибке при использовании оператора созданием DalContext объекта.

оба приложения используют ту же версию EF 6.1.3. Я был в состоянии сделать добавление-миграции просто отлично. Я не знаю, я в тупике.

Я ссылался на другие приложения, в которых я использовал это, и я не могу найти никаких различий относительно того, почему это произойдет. Я знаю, что это будет что-то явно очевидное.

+2

Вы проверили, что 'ConfigurationManager.ConnectionStrings [" DefaultConnection "]' не является нулевым? – Rob

+1

Можете ли вы также опубликовать трассировку стека? –

+0

Роб был прав. Это был долгий день, меня следует избегать для перехода на пустую строку подключения. Я смотрел на него глубже, чем должен был. – Barqster7764

ответ

0

В этом виде это всегда хорошая практика сделать binary search debugging. То есть, продолжайте удалять вещи, пока это не сработает. Уточните ошибку. До минимального минимума.

Вы можете попробовать:

  • Заменить это строкой actuall соединения: ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString. Это наиболее вероятно. «DefaultConnection» может не отображаться в файле web.config/app.config, что объясняет, почему тот же код работает для других хост-проектов.
  • Удалить/заменить это: Database.SetInitializer(new CreateDatabaseIfNotExists<DalContext>());
  • Удалить/заменить это: modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();.

Учитывая, что вы предоставили информацию, мы не можем помочь вам дальше.

+0

хороший совет. Я не сделал этого и пропустил простой ответ. – Barqster7764

Смежные вопросы