我遇到了一个问题,我无法访问sql脚本来应用迁移.
这是我的迁移代码:
这是我的迁移代码:
public partial class AddSomethingMigration : Migration { private const string MIGRATION_sql_SCRIPT_FILE_NAME = @"Migrations\Scripts\20170710123314_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)); } }
因此,当我在本地计算机上使用程序包管理器控制台时,一切正常.但是当我部署到环境中时,我得到了与文件的差异.
解决方法
我找到了这个问题的几个答案.
>将脚本添加为项目资源并使用它:
string sql = Resources._20170630085940_AddMigration; migrationBuilder.sql(sql);
这个选项不太好,因为.sql会嵌入程序集中.
>如果您使用.csproj结构的Net Core项目,则可以将itemgroup添加到xml:
<ItemGroup> <Content Include="Migrations\**\*.sql" CopyToPublishDirectory="PreserveNewest" /><!-- CopyToPublishDirectory = { Always,PreserveNewest,Never } --></ItemGroup>
然后指定文件的路径,如:
Path.Combine(AppContext.BaseDirectory,relativePath)