Я получаю несколько необработанных исключений при использовании 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, используя:
Install-Package 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
бегун) в
System.Data.Entity.Migrations.Design.ToolingFacade.GetContextTypes ()
в
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 target, Object [] args, Boolean [] byrefModifiers,
Культура Int32, String [] namedParameters) в
System.RuntimeType.InvokeMember (имя строки, BindingFlags
bindingFlags, Binder Binder, Object target, Object [] provideArgs,
Модификаторы ParameterModifier [], CultureInfo culture, String []
namedParams) в
System.Management.Automation.ComMethod.InvokeMethod (метод PSMethod,
Object [] arguments) Исключение было сгенерировано целью
призывание.
Update-Database:
PM> Обновление базы данных -Verbose
Использование проекта NuGet
'Ckms.KeyManagement.Managers'. Использование проекта StartUp ''.
System.Reflection.TargetInvocationException: было сгенерировано исключение
целью вызова. ---> System.ArgumentException:
параметр неверен. (Исключение из HRESULT: 0x80070057
(E_INVALIDARG)) --- конец трассировки стека внутренних исключений --- в
System.RuntimeType.InvokeDispMethod (имя строки, BindingFlags
invokeAttr, Object target, Object [] args, Boolean [] byrefModifiers,
Культура Int32, String [] namedParameters) в
System.RuntimeType.InvokeMember (имя строки, BindingFlags
bindingFlags, Binder Binder, Object target, Object [] provideArgs,
Модификаторы ParameterModifier [], CultureInfo culture, String []
namedParams) в
System.Management.Automation.ComMethod.InvokeMethod (метод PSMethod,
Object [] arguments) Исключение было сгенерировано целью
призывание.
Есть идеи? Сообщения об ошибках не очень полезны. Я пробовал команды Nuget с существующей базой данных и без нее.