首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过代码添加实体框架迁移

通过代码添加实体框架迁移
EN

Stack Overflow用户
提问于 2015-09-18 12:14:52
回答 2查看 1K关注 0票数 4

我想知道是否有人知道如何通过c#代码添加迁移。

我刚开始编码第一次迁移。

我一直在和System.Data.Entity.Migrations.DesignSystem.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没有回答我的问题。他们回答如何用现有迁移更新数据库。在更新之前,我想添加一个新的迁移。按码

EN

回答 2

Stack Overflow用户

发布于 2019-05-22 13:54:45

我已经尝试过您正在做的事情,但是做不到(尽管我已经通过代码获得了相当多的EF迁移信息)。结果,我放弃了这个想法,因为这是个坏主意。迁移是在开发时创建的,甚至预编译。您正在尝试在应用程序运行时执行此操作。

即使您能够生成一个新的迁移,您将如何处理新的类?您需要能够重新编译项目,并使用新编译的DLL在数据库中运行某种形式的Update-Database

此外,部署的应用程序进行新迁移的原因是什么?新的迁移发生在您更改DB模型之后,即添加在您的DbContext中引用的新类/属性。如果您的应用程序被编译并部署到客户端,这怎么会发生呢?

从您的评论中我看到,您实际上希望在部署失败时回滚迁移,而不是创建新的迁移--这是一个完全不同的故事,可以在C#中完成(如果您想要这样做,请告诉我,我将为您挖掘这段代码)。

票数 2
EN

Stack Overflow用户

发布于 2015-09-18 13:00:00

代码语言:javascript
运行
复制
Add-Migration [MigrationName]

如果需要指定域目标:

代码语言:javascript
运行
复制
Add-Migration [MigrationName] -ConfigurationTypeName [ProjectName.Web.Migrations.Configuration]

根据您的应用程序和实体配置,您可以使用如下方法:

代码语言:javascript
运行
复制
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);
        }
    }
}

这是一个您可以拥有的方法,所以您可以从代码的另一部分调用它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32651824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档