Как запустить сценарий миграции SQL с помощью Entity Framework Core
я столкнулся с проблемой, когда я не могу достичь сценария SQL для применения миграции. Вот мой миграционный код:
public partial class AddSomethingMigration : Migration
{
private const string MIGRATION_SQL_SCRIPT_FILE_NAME = @"MigrationsScripts170710123314_AddSomethingMigration.sql";
protected override void Up(MigrationBuilder migrationBuilder)
{
string sql = Path.Combine(Directory.GetParent(Directory.GetCurrentDirectory()).FullName, MIGRATION_SQL_SCRIPT_FILE_NAME));
migrationBuilder.Sql(File.ReadAllText(sql));
}
}
поэтому, когда я использую консоль диспетчера пакетов на локальном компьютере, все работает нормально. Но когда я развертываю в среде, я получаю несоответствие в файле.
могу ли я запускать статические сценарии SQL через миграцию EF автоматически вообще, или я должен вставить SQL-запрос в коде?
1 ответов
Я нашел несколько ответов на этот вопрос.
-
добавить скрипты в качестве ресурсов проекта и использовать его как:
string sql = Resources._20170630085940_AddMigration; migrationBuilder.Sql(sql);
этот вариант не так хорош, потому что .sql будет встроен в сборку.
-
Если вы используете проекты Net Core С.структура csproj, вы можете добавить itemgroup в xml:
<ItemGroup> <Content Include="Migrations\**\*.sql" CopyToPublishDirectory="PreserveNewest" /><!-- CopyToPublishDirectory = { Always, PreserveNewest, Never } --></ItemGroup>
и затем укажите путь к файлу типа:
Path.Combine(AppContext.BaseDirectory, relativePath)