К счастью, @Claies неверен. Я могу использовать миграции без Nuget. Я проработал, и это не сложно.
Сборки Необходимого
18 узлов требуется (так как все они получили разделить на более модульный после 6.1). Их можно извлечь из пакета Nuget, который можно загрузить.
EntityFramework.Relational, Version=7.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
EntityFramework.Core, Version=7.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
EntityFramework.Sqlite, Version=7.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
System.Interactive.Async, Version=1.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Microsoft.Extensions.Logging.Abstractions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
Remotion.Linq, Version=2.0.0.0, Culture=neutral, PublicKeyToken=fee00910d6e5f53b
System.Diagnostics.DiagnosticSource, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
Microsoft.Extensions.DependencyInjection.Abstractions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
Microsoft.Extensions.DependencyInjection, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
Microsoft.Extensions.Caching.Abstractions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
Microsoft.Extensions.OptionsModel, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
Microsoft.Extensions.Logging, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
Microsoft.Extensions.Caching.Memory, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
Microsoft.Data.Sqlite, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
Microsoft.Extensions.Primitives, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
Microsoft.Extensions.Configuration.Abstractions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
Microsoft.Extensions.Configuration.Binder, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
Microsoft.Extensions.PlatformAbstractions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
__EFMigrations Таблица:
Нет необходимости беспокоиться об этом, так как EF сборки позаботиться о создании этого
скрипты
миграции
NuGet "Add-Migration" команда добавляет 3 файлов (миграция .cs, конструктор .cs & моментальный снимок), но на самом деле я обнаружил, что для миграции требуется только один.
Сначала создайте каталог под названием «Миграции». Затем поместите в него .cs файлы с такой структурой:
[DbContext(typeof(BloggingContext))]
[Migration("151205_01")]
public class InitialMigration : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
// create table, add columns/keys etc.
}
protected override void Down(MigrationBuilder migrationBuilder)
{
// opposite of "Up", ie. drop table
}
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
// can remain blank, not sure what its used for
}
}
Я думаю, его хорошо, чтобы назвать эти файлы, такие как «ггммдд-р-р», где г = ревизии, так что они всегда сортируются в порядке и работать в заказ.
Как применять миграции
Просто позвоните:
using(var db = new MyContext())
{
db.Database.Migrate();
}
EF 7 не может сделать это на контекстной конкретизации, но это может быть сделано при запуске приложения. Если есть ожидающие миграции, они будут запущены.
Все.
Файлы NuGet по умолчанию хранятся в каталоге «пакеты» за пределами папки проекта, поэтому им не нужно проверять исходный элемент управления; если каталог пакетов не находится на компьютере при первом создании, тогда NuGet загрузит соответствующие пакеты, поэтому не использовать его для сохранения при проверке контроля исходного кода является проблемой без проблем. – Claies
@Claies, о том, что я не хочу, чтобы он загружал пакет nuget при развертывании или имел какую-либо ссылку на что-либо в Интернете. – sprocket12
, то вы не можете использовать миграции. Процесс миграции - очень сложный процесс, который анализирует вашу базу данных, ваши модели, создает базовый код для методов вверх/вниз, управляет таблицей __migrationHIstory и т. Д. Попытка сделать это вручную будет очень подвержена ошибкам, и в этот момент вам лучше было бы просто использовать SQL Management Studio для создания требуемых таблиц. – Claies