Я не могу получить код Первые миграции, работающие должным образом в моем проекте 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
}
}
}
Консоль диспетчера пакетов выпадает, указывая на проект с контекстом? –
Да, это проект по умолчанию - это инфраструктура, а файл DataContext.cs находится внутри инфраструктуры. DataAccess – TheBrogrammer
Как выглядит ваш контекст данных и инициализатор? –