2013-10-15 4 views
0

В winforms EF4 у меня есть решение с проектами Datalayer, DomainClasses, UI и Test.
В тестовом проекте используется другая база данных, чем основной проект.Включение миграции для тестовой базы данных

У меня есть строка основного подключения, настроенная с именем строки подключения в app.config интерфейса пользователя. У меня есть строка тестового соединения, установленная в app.config проекта тестирования с тем же именем строки подключения.

Мой контекст настроен на использование названия строки подключения следующим образом:

public class Context : DbContext 
{ 
    public Context() 
     : base("EFTest") // uses named connection string from app.config 
    { } 
    public DbSet<Person> People { get; set; } 
    // etc 
} 

я могу включить миграции в проекте datalayer. Однако, когда я пытаюсь включить проекты в тестовый проект, я получаю сообщение об ошибке:

PM> enable-migrations -ProjectName Test 
No context type was found in the assembly 'Test'. 

Что мне не хватает?

ответ

1

Вам нужно включить миграцию в проекте, который содержит ваш DbContext. Если проект тестирования не содержит DbContext, вам не нужно включать его для переноса.

Деталь:

Вы не указали точно, но это звучит, как вы используете только один DbContext, и что в проекте DataLayer. Команда Enable-Migrations просто создает структуру эшафотов, необходимую для указания самих миграций. Перенос - это один именованный класс, который содержит набор команд, которые должны запускаться для обновления и понижения рейтинга из версии базы данных, независимо от того, в какой базе данных (test/live/dev) вы запускаете ее. Таким образом, вам нужно только запустить Enable-Migrations для проекта datalayer, используя

> Enable-Migrations -ProjectName DataLayer 

Эти команды хранятся в проекте DbContext «s, и генерируются путем сравнения классов, которые ваши DbContext ссылки на такие свойства, как public DbSet<Person> People { get; set; } против структуру базы данных (а также другие вещи, такие как код Fluent API). Вы, скорее всего, поэтому хотите конкретно генерировать этот путем сравнения тест (или, возможно, даже развитие) базы данных, а не живую база данных, чтобы сделать это вы делаете:

> Add-Migration -ProjectName DataLayer -StartUpProjectName Test 

После того, как вы сделали это, вы можете запускать команды мигрировать специально ваш живой или тестовую базу данных с помощью:

> Update-Database -ProjectName DataLayer -StartUpProjectName [Test|UI] 

Как всегда, > get-help Enable-Migrations (или get-help для любой команды кочевок) перечислены все переключатели конфигурации и что они делают для вас.

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