Я получаю несколько необработанных исключений при использовании 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 project в качестве стартового проекта и выполнил следующую команду для проекта DAL с контекстом базы данных и инициализатором:
PM> Enable-Migrations -Verbose
Используя проект NuGet «Ckms.KeyManagement.Managers». Ошибка при поиске типа контекста (укажите -Подробно, чтобы просмотреть сведения об исключении). 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()Отредактируйте сгенерированный класс конфигурации, чтобы указать контекст для включить миграцию для. Code First Migrations включен для проекта Ckms.KeyManagement.Managers.
В проект DAL добавлен дочерний класс DbMigrationsConfiguration. Если я добавлю тип DbContext вручную и включу автоматические миграции :
internal sealed class Configuration : DbMigrationsConfiguration<MyAppContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
}
protected override void Seed(MyAppContext context)
{ }
}
, эти исключения будут выброшены для команд Add-Migration and 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, связующее связующее, цель объекта, Object[] createdArgs, Модификаторы ParameterModifier[], культура CultureInfo, String[] namedParams)в Метод System.Management.Automation.ComMethod.InvokeMethod(PSMethod, Object[] arguments)Исключение было вызвано целью призыв.
Обновление-База данных:
PM> Обновление-База данных -Подробный
Использование проекта 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, связующее связующее, цель объекта, Object[] createdArgs, Модификаторы ParameterModifier[], культура CultureInfo, String[] namedParams)в Метод System.Management.Automation.ComMethod.InvokeMethod(PSMethod, Object[] arguments)Исключение было вызвано целью призыв.
Есть идеи? Сообщения об ошибках не очень полезны.Я пробовал команды Nuget с существующей базой данных и без нее.