0

Я не могу получить код Первые миграции, работающие должным образом в моем проекте Visual Studio 2013. Я использую EF 6.1 и C# .Net 4.5. Когда я пытаюсь запустить Enable-Migrations или Enable-Migrations -ContextTypeName DataContext я получаю следующее сообщение об ошибке:Entity Framework Enable-Migrations Null Reference Exception

PM> Enable-Migrations -ContextTypeName DataContext -Force 
Checking if the context targets an existing database... 
System.NullReferenceException: Object reference not set to an instance of an object. 
    at Infrastructure.DataAccess.DataContext..ctor() in c:\Users\mblack\Documents\Visual Studio 2013\Projects\BluemoonApp\Infrastructure\DataAccess\DataContext.cs:line 16 
--- End of stack trace from previous location where exception was thrown --- 
    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 
    at System.Data.Entity.Infrastructure.DbContextInfo.CreateInstance() 
    at System.Data.Entity.Infrastructure.DbContextInfo..ctor(Type contextType, DbProviderInfo modelProviderInfo, AppConfig config, DbConnectionInfo connectionInfo, Func1 resolver) 
    at System.Data.Entity.Migrations.DbMigrator..ctor(DbMigrationsConfiguration configuration, DbContext usersContext, DatabaseExistenceState existenceState, Boolean calledByCreateDatabase) 
    at System.Data.Entity.Migrations.DbMigrator..ctor(DbMigrationsConfiguration configuration) 
    at System.Data.Entity.Migrations.Design.MigrationScaffolder..ctor(DbMigrationsConfiguration migrationsConfiguration) 
    at System.Data.Entity.Migrations.Design.ToolingFacade.ScaffoldRunner.Run() 
    at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate) 
    at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate) 
    at System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner runner) 
    at System.Data.Entity.Migrations.Design.ToolingFacade.ScaffoldInitialCreate(String language, String rootNamespace) 
    at System.Data.Entity.Migrations.EnableMigrationsCommand.<>c__DisplayClass2.<.ctor>b__0() 
    at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command) 
Object reference not set to an instance of an object. 

Я не могу понять, почему это не будет работать. Я попытался переустановить EntityFramework через консоль диспетчера пакетов Nuget, а также удалить папку Migrations, а затем попытаться выполнить миграцию «Re-Enable».

Пожалуйста, дайте мне знать, если есть какая-либо дополнительная информация вам нужна, спасибо

EDIT: Добавление DataContext.cs и DataContextInitializer.cs

namespace Infrastructure.DataAccess 
{ 
    public class DataContext : DbContext 
    { 
     public DataContext() 
      : base(ConfigurationManager.ConnectionStrings["BluemoonDev"].ConnectionString) 
     { 
      Configuration.ProxyCreationEnabled = false; 
     } 

     public virtual DbSet<Task> Tasks { get; set; } 
     public virtual DbSet<Test> Tests { get; set; } 
     public virtual DbSet<Core.Models.Configuration> Configurations { get; set; } 
     public virtual DbSet<Subscriber> Subscribers { get; set; } 

     protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 
      //modelBuilder.Entity<Task>().HasKey(t => t.TaskId); 


      base.OnModelCreating(modelBuilder); 
     } 
    } 
} 

namespace Infrastructure.DataAccess 
{ 
    public class DataContextInitializer : DropCreateDatabaseIfModelChanges<DataContext> 
    { 
     protected override void Seed(DataContext context) 
     { 
      // . . . Creating lists for each Entity 
      // . . . Adding those items to context and saving changes 
     } 
    } 
} 
+0

Консоль диспетчера пакетов выпадает, указывая на проект с контекстом? –

+0

Да, это проект по умолчанию - это инфраструктура, а файл DataContext.cs находится внутри инфраструктуры. DataAccess – TheBrogrammer

+0

Как выглядит ваш контекст данных и инициализатор? –

ответ

0

Если вы собираетесь использовать миграцию, нужно изменить свой инициализатор в MigrateDatabaseToLatestVersion или NullDatabaseInitializer. https://msdn.microsoft.com/en-us/data/jj591621.aspx#initializer

+0

Когда я пытаюсь запустить команду «Enable-Migrations», она все равно терпит неудачу (я использую 'NullDatabaseInitializer'). – TheBrogrammer

+0

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

+0

Хорошо, если это не работает, я бы посмотрел на такие проблемы, как конфигурация. Попробуйте изменить свой ctor на базу («BluemoonDev»), как предложил jrummell. Также проверьте права на DropCreate. Является ли это SQL Server или LocalDb? –

0

Проблема в том, что вам нужно установить строку соединения в конструкторе контекста.

0

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

-1

Проверьте свойства решения, если выбран один проект запуска.

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