Исключения для первых миграций кода Entity Framework
Я получаю несколько необработанных исключений при использовании Code First Migrations of Entity Framework 4.3.
Контекст базы данных:
public class MyAppContext : DbContext
{
public DbSet<Branch> Branches { get; set; }
public MyAppContext()
{ }
}
Организация:
public class Branch : IEntity<Guid>
{
public Guid Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public bool Active { get; set; }
}
Инициализатор базы данных:
public class MyAppInitializer : CreateDatabaseIfNotExists<MyAppContext>
{
protected override void Seed(MyAppContext context)
{
context.Branches.Add(new Branch() { Id = branchId, Name = "Acme", Description = "Acme", Active = true });
context.SaveChanges();
}
}
Я установил Entity Framework 4.3 в свой проект DAL и MVC, используя:
Установить-пакет EntityFramework
Я установил проект MVC в качестве запускаемого проекта и выполнил следующую команду для проекта DAL с контекстом базы данных и инициализатором:
PM> Enable-Migrations -Verbose
Использование проекта NuGet «Ckms.KeyManagement.Managers». Ошибка при поиске типа контекста (укажите -Verbose, чтобы увидеть подробности исключения). System.Data.Entity.Migrations.Design.ToolingException: невозможно загрузить один или несколько запрошенных типов. Получите свойство LoaderExceptions для получения дополнительной информации. в System.Data.Entity.Migrations.Design.ToolingFacade.Run (BaseRunner runner) в System.Data.Entity.Migrations.Design.ToolingFacade.GetContextTypes ()
at System.Data.Entity.Migrations.MigrationsCommands.FindContextToEnable () Отредактируйте сгенерированный класс Configuration, чтобы указать контекст, для которого необходимо выполнить миграции. Первоначальные миграции кода включены для проекта Ckms.KeyManagement.Managers.
Дочерний класс DbMigrationsConfiguration добавлен в проект DAL. Если я добавлю тип DbContext вручную и включу автоматическую миграцию:
internal sealed class Configuration : DbMigrationsConfiguration<MyAppContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
}
protected override void Seed(MyAppContext context)
{ }
}
Эти исключения генерируются для команд Add-Migration и Update-Database:
PM> Add-Migration TestEFMigrationsColumn -Verbose
Использование проекта NuGet «Ckms.KeyManagement.Managers». Использование проекта StartUp ''. System.Reflection.TargetInvocationException: исключение было сгенерировано целью вызова. ---> System.ArgumentException: параметр неверен. (Исключение из HRESULT: 0x80070057 (E_INVALIDARG)) --- Конец внутренней трассировки стека исключений --- в System.RuntimeType.InvokeDispMethod (Строковое имя, BindingFlags invokeAttr, Объектная цель, Object [] args, Boolean [] byrefModifiers, Int32 culture , String [] namedParameters) в System.RuntimeType.InvokeMember (имя строки, BindingFlags bindingFlags, связыватель связывателя, цель объекта, модификаторы Object [] provideArgs, ParameterModifier [], CultureInfo culture, строка String [] namedParams) в System.Management.Automation. ComMethod.InvokeMethod (метод PSMethod, аргументы Object []). Исключение было выдано целью вызова.
Обновление базы данных:
PM> Обновление-База данных -Verbose
Использование проекта NuGet «Ckms.KeyManagement.Managers». Использование проекта StartUp ''. System.Reflection.TargetInvocationException: исключение было сгенерировано целью вызова. ---> System.ArgumentException: параметр неверен. (Исключение из HRESULT: 0x80070057 (E_INVALIDARG)) --- Конец внутренней трассировки стека исключений --- в System.RuntimeType.InvokeDispMethod (Строковое имя, BindingFlags invokeAttr, Объектная цель, Object [] args, Boolean [] byrefModifiers, Int32 culture , String [] namedParameters) в System.RuntimeType.InvokeMember (имя строки, BindingFlags bindingFlags, связыватель связывателя, цель объекта, модификаторы Object [] provideArgs, ParameterModifier [], культура CultureInfo, строка String [] namedParams) в System.Management.Automation. ComMethod.InvokeMethod (метод PSMethod, аргументы Object []). Исключение было выдано целью вызова.
Есть идеи? Сообщения об ошибках не очень полезны. Я пробовал команды Nuget с и без существующей базы данных.