Как перенести DB без nuget? Невозможно использовать Visual Studio с nuget в рабочей среде. В настоящее время многие примеры только обучают нас использованию Visual Studio с nuget. Как использовать сгенерированные классы DbMigration?EF Code First DbMigration без nuget
ответ
Самый простой способ:
Database.SetInitializer(
new MigrateDatabaseToLatestVersion<MyDbContext,
MyDbMigrationsConfiguration>());
Это будет запускать миграции при инициализации DbContext.
Можно также принудительно выполнение вручную:
var migrator = new DbMigrator(new MyMigrationsConfiguration());
migrator.Update();
(я полагаю, вы также должны установить TargetDatabase
от конфигурации, но вы можете попробовать)
Вы можете сделать это с помощью EF Power Tools, там есть программа migrate.exe, которую вы можете использовать для запуска миграции из командной строки (например, пост-сборка). Если вы хотите запускать миграции в производственной базе данных, вы также можете использовать команду «Обновить базу данных» для генерации сценариев SQL из классов миграции, что очень полезно, если вам нужно пройти через администратор базы данных.
Электроинструменты EF доступны в галерее Visual Studio и, необязательно, here, ознакомьтесь с этим очень полезным video, который, между прочим, рассказывает о команде Update-Database.
Вы можете перейти на последнюю версию с помощью Настройка Web.config - см. this blog post by Rowan Miller:
Если вы используете First Migrations кода, вы можете настроить автоматическую миграцию базы данных с помощью инициализации MigrateDatabaseToLatestVersion э.
<contexts>
<context type="Blogging.BlogContext, MyAssembly">
<databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[Blogging.BlogContext,
MyAssembly], [Blogging.Migrations.Configuration, MyAssembly]], EntityFramework" />
</context>
</contexts>
Просто переставить контекстную класс здесь: System.Data.Entity.MigrateDatabaseToLatestVersion является встроенным в EF. Этот параметр обновляет старую версию AppSettings той же идеи.
На мой взгляд, это лучший способ, потому что вопрос о том, какой инициализатор использовать, действительно является конфигурацией, и вы хотите иметь возможность Web.config, и в идеале применять конфигурационные преобразования для работы в разных средах ,
Вот варианты:
- Используйте кнопки migrate.exe инструмент командной строки, которая поставляется в нашем пакете NuGet .
- Использовать инициализатор MigrateDatabaseToLatestVersion как описано .
- Используйте API-интерфейс выполнения, доступный из класса DbMigrator .
Я искал способ контролировать, какие миграции выполняются явно в коде без необходимости включения класса DbConfiguration или автоматических миграций.
Так мне удалось создать следующее расширение:
public static void RunMigration(this DbContext context, DbMigration migration)
{
var prop = migration.GetType().GetProperty("Operations", BindingFlags.NonPublic | BindingFlags.Instance);
if (prop != null)
{
IEnumerable<MigrationOperation> operations = prop.GetValue(migration) as IEnumerable<MigrationOperation>;
var generator = new SqlServerMigrationSqlGenerator();
var statements = generator.Generate(operations, "2008");
foreach (MigrationStatement item in statements)
context.Database.ExecuteSqlCommand(item.Sql);
}
}
В качестве примера, имеющий миграцию как следующее:
public class CreateIndexOnContactCodeMigration : DbMigration
{
public override void Up()
{
this.CreateIndex("Contacts", "Code");
}
public override void Down()
{
base.Down();
this.DropIndex("Contacts", "Code");
}
}
Вы можете запустить его с помощью DbContext:
using (var dbCrm = new CrmDbContext(connectionString))
{
var migration = new CreateIndexOnContactCodeMigration();
migration.Up();
dbCrm.RunMigration(migration);
}
есть другое решение:
Using DB = New SHAContext()
If DB.Database.Exists() Then
Dim migrator As New DbMigrator(New SHAClassLibrary.Migrations.Configuration())
For Each m In migrator.GetDatabaseMigrations()
Try
migrator.Update(m)
Catch ex As Exception
End Try
Next
End If
'DB.test()
End Using
- 1. EF Code First MetadataException
- 2. EF CascadeOnDelete Code First
- 3. Наследование EF Code-First
- 4. EF Code First - данные кэширования миграции?
- 5. EF Code First Migration не скомпилирует
- 6. EF Code First: Модель Конфигурация
- 7. EF Code First «Транзакционная проблема»
- 8. Fluent Code First EF 4.3
- 9. EF Code First keyless association
- 10. EF Code First Cyclical Reference
- 11. EF Code First Migration MODELBUILDER
- 12. EF Code First Имена столбцов
- 13. Используйте EF Code First Local
- 14. Строка подключения EF Code First
- 15. EF Code First Отношения проблема
- 16. EF Code First NotMapped Attribute?
- 17. EF Code First Drop Database?
- 18. Сброс EF Code-First Migration State
- 19. EF Code First во многих ко многим
- 20. EF Code first - забыл запустить «Add-Migration»
- 21. MySql EF Code First Миграции VB.NET
- 22. Использование READ_COMMITTED_SNAPSHOT с EF Code First 5
- 23. EF Code-First: изменить поле datetime на автоматическое использование MySQL
- 24. EF Code First - Определение двухсторонней Navigation Свойства
- 25. EF Code First множественным 0-к-многим
- 26. ef code first: получить имя таблицы сущностей без dataannotations
- 27. EF Code First Многие для многих отношений без сущности
- 28. EF Code First внешнего ключа без свойства навигации
- 29. EF Code First: Определение внешних ключей
- 30. EF Code-First User Testimonial System