2012-07-02 2 views
8

У меня есть проект библиотеки классов с моим DbContext и миграции включен в следующий файл конфигурации:Как сбросить миграцию баз данных с использованием EF-кода?

<configuration> 
    <configSections> 
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.3.1.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
    </configSections> 
    <connectionStrings> 
    <add name="DataContext" connectionString="Data Source=Data.sdf" providerName="System.Data.SqlServerCe.4.0" /> 
    </connectionStrings> 
    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"> 
     <parameters> 
     <parameter value="System.Data.SqlServerCe.4.0" /> 
     </parameters> 
    </defaultConnectionFactory> 
    </entityFramework> 
</configuration> 

некоторое время, прежде чем я играл с миграциями для этого проекта и Get-Миграции команда всегда возвращает следующее мне:

PM> Get-Migrations -StartupProjectName "Data" 
Retrieving migrations that have been applied to the target database. 
201207012104355_Initial 
201207012031234_Initial 
201207012024250_Initial 

Проблема в том, что команда всегда возвращает эти элементы, даже если я удаляю Data.sdf или удаляю весь проект и создаю новый. Единственный способ создать новую базу данных - это изменить имя файла базы данных в строке соединения из Data.sdf в Data1.sdf, например. Итак, как я могу сбросить историю миграции без изменения имени базы данных?

+3

Вы уверены, что вы удалили нужный файл Data.sdf ? –

+0

Кажется, мне нужно было удалить Data.sdf там: C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ Data.sdf Очень неожиданно. –

+0

Миграции создают таблицу в вашей базе данных __MigrationHistory, где хранятся миграции. вы проверили? –

ответ

5

Не знаю, является ли это официальным методом. Но вот как я это сделал.

  1. Удаляется миграции файл
  2. Удаляется соответствующая строка из __MigrationHistory

    DELETE FROM __MigrationHistory WHERE MigrationId = '201210271944168_AddLogTable'

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