我想知道是否有人知道如何通过c#代码添加迁移。
我刚开始编码第一次迁移。
我一直在和System.Data.Entity.Migrations.Design的System.Data.Entity.Migrations.Design类玩。
使用这个类,我可以检测迁移,更新从一个迁移到另一个迁移,检测挂起的迁移。我也可以搭建一个新的迁移框架,尽管我不知道如何将这种迁移“添加”到迁移文件夹中(处理模型中的更改)。
通过新创建的脚手架迁移,用于该迁移的C#代码保存在属性中。理论上,我可以在迁移目录中创建一个文件,并将这段代码添加到其中(然后使用这种迁移更新数据库)。虽然挂起的模型更改不是在"up“和"down”方法中输入的。
我也尝试过在C#中使用power shell对象,使用附加迁移命令等,但是它们并不被认为是已知的cmdlet。
我想做的是控制台命令的等价物:MigrationName "MigrationName“-ProjectName "ProjectName”.在c#中
感谢你的任何帮助
Entity framework 4.3 run migrations at application start没有回答我的问题。他们回答如何用现有迁移更新数据库。在更新之前,我想添加一个新的迁移。按码
发布于 2019-05-22 13:54:45
我已经尝试过您正在做的事情,但是做不到(尽管我已经通过代码获得了相当多的EF迁移信息)。结果,我放弃了这个想法,因为这是个坏主意。迁移是在开发时创建的,甚至预编译。您正在尝试在应用程序运行时执行此操作。
即使您能够生成一个新的迁移,您将如何处理新的类?您需要能够重新编译项目,并使用新编译的DLL在数据库中运行某种形式的Update-Database。
此外,部署的应用程序进行新迁移的原因是什么?新的迁移发生在您更改DB模型之后,即添加在您的DbContext中引用的新类/属性。如果您的应用程序被编译并部署到客户端,这怎么会发生呢?
从您的评论中我看到,您实际上希望在部署失败时回滚迁移,而不是创建新的迁移--这是一个完全不同的故事,可以在C#中完成(如果您想要这样做,请告诉我,我将为您挖掘这段代码)。
发布于 2015-09-18 13:00:00
Add-Migration [MigrationName]如果需要指定域目标:
Add-Migration [MigrationName] -ConfigurationTypeName [ProjectName.Web.Migrations.Configuration]根据您的应用程序和实体配置,您可以使用如下方法:
namespace APP.Migrations
{
internal class ManualConfiguration : Configuration
{
public void ManualSeed(EntitiesDbContext context)
{
this.AutomaticMigrationsEnabled = true;
this.AutomaticMigrationDataLossAllowed = false;
Database.SetInitializer(new MigrateDatabaseToLatestVersion<Entities.EntitiesDbContext, Configuration>());
Seed(context);
}
}
}这是一个您可以拥有的方法,所以您可以从代码的另一部分调用它。
https://stackoverflow.com/questions/32651824
复制相似问题