c# – 如何使用Entity Framework Core运行迁移SQL脚本
发布时间:2020-12-15 08:32:46 所属栏目:百科 来源:网络整理
导读:我遇到了一个问题,我无法访问SQL脚本来应用迁移. 这是我的迁移代码: public partial class AddSomethingMigration : Migration{ private const string MIGRATION_SQL_SCRIPT_FILE_NAME = @"MigrationsScripts20170710123314_AddSomethingMigration.sql";
我遇到了一个问题,我无法访问SQL脚本来应用迁移.
这是我的迁移代码: public partial class AddSomethingMigration : Migration { private const string MIGRATION_SQL_SCRIPT_FILE_NAME = @"MigrationsScripts20170710123314_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)); } } 因此,当我在本地计算机上使用程序包管理器控制台时,一切正常.但是当我部署到环境中时,我得到了与文件的差异. 我可以自动通过EF迁移运行我的静态SQL脚本,还是应该在代码中内嵌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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |