Tag: code first migrations

EF向后兼容的数据库迁移

我正在尝试使用EF代码优先和迁移来弄清楚如何实现以下部署方案。 我的想法是,我想用向后兼容的架构更改升级数据库(例如:添加一列)并测试一切仍然有效。 它的灵感来自绿色/蓝色部署,但并不完全遵循这种模式。 这背后的原因是遵循这个过程: 升级数据库(EF迁移) 测试网站 更新网站代码 如果出现问题,请恢复到之前的网站代码 我肯定会面临的问题是,在第2步(和第4步),我肯定会从EF获得有关模型被更改的错误,尽管所有数据库更改都与现有代码兼容… 我知道解决方案是将数据库“向下”迁移到以前的版本(甚至进行数据库备份),但可能会发生某些迁移非常复杂且“向下”部分可能被破坏或编码很差的情况。 所以我的问题是: 有没有办法避免EF检查模型或最终意识到更改是向后兼容的?

合并entity framework中的迁移条目

我有一个entity framework6 CF项目,已经有一些迁移。 该模型现在是稳定的,无需保留已存在的迁移历史记录。 有没有办法重置模型并将所有迁移命令合并到初始迁移中? 例如,第一次迁移会添加一列,而第二次迁移会添加唯一的非聚集索引。 我现在想直接在OnModelCreating看到所有这些更改,而不是在单独的迁移中。

entity framework7逆向工程ASP.NET 5

我一直在尝试使用EF7 _4将我的数据库迁移到Web应用程序模型中。 我意识到的几件事情已经改变了如何配置特定实体的语法/方法。 通常,您可以使用EF Power Tools(EF6)生成POCO类,它生成实体类型和实体映射作为配置。 一切都干净,一切正常。 我的问题是, 是否有人体验过如何使用EF7? 从我在这里找到的有关Entity Framework 7 Beta 4的msdn博客 逆向工程的function仍处于开发阶段。 “ 从数据库逆向工程模型的早期预览 ”。

手动将DbContext提供给DbMigrator

Platform .NET 4.5和Entity Framework 6。 问题我有以下代码来执行迁移: //The following function just returns an object of the Configuration() class //generated by code migrations var migratorConfig = currentMigrationProvider.CreateDbMigrationConfiguration(); var dbMigrator = new System.Data.Entity.Migrations.DbMigrator(migratorConfig); dbMigrator.Update(); 问题是Update()函数尝试创建我的DbContext类的实例,并且由于一些好的原因,我需要手动创建上下文并将其提供给dbMigrator。 那可能吗? 怎么样?

EF迁移应该去哪里,我的类库项目还是我的ASP.NET项目?

我的方案包含: FooBarAsp ,一个asp项目(为应用程序提供UI) FooBar ,类库(应用程序) FooBar.Tests ,一个测试项目(测试应用程序) FooBar使用EF 6 Code First,包含许多模型和DataContext 。 FooBarAsp使用Microsoft的Identity框架进行用户身份validation,并具有ApplicationDbContext 。 两种情境都很好,并按预期工作。 Global.asax.cs应该执行MigrateDatabaseToLatestVersion (对吧?)。 FooBar.Tests应该执行DropCreateDatabaseAlways并且不关心迁移(对吗?)。 我应该在FooBarAsp或FooBar中启用Flash吗? 对于这两种情况? 在FooBar中运行EnableMigrations后(仅用于踢),我的__MigrationHistory表包含两个InitialCreate行,一个用ContextKey = FooBar.Models.DataContext,另一个用ContextKey = FooBarAsp.Models.ApplicationDbContext。 所以他们都被跟踪了? 如果是这样,(并且因为我没有启用自动迁移),我是否需要在Global.asax.cs中显式运行MigrateDatabaseToLatestVersion和MigrateDatabaseToLatestVersion ? 编辑 为什么我不想将ApplicationUser移动到FooBar并将ApplicationDbContext合并到DataContext ? ASP附带的库存ApplicationUser是一个单独的实体(和单独的ApplicationDbContext ,恰好指向同一个数据库)。 ASP的ApplicationUser和Identity框架负责身份validation,注册,电子邮件validation,登录,注销,密码,密码强度,密码重置,双因素身份validation,Cookie,会话,来自facebook / google等来源的外部登录.FooBar不会知道或关心任何这些。 FooBar的User有一个UserName,ASP的ApplicationUser有一个UserName。 当用户登录时,我只是按用户名查找Foobar的User ,并且登录的是谁。因此,当我创建一个新Blog (其中Blog是FooBar实体)时,作者是FooBar的User (不是ApplicationUser )。 最终结果是FooBar不是Web / Desktop / Console / iPhone / Android应用程序。 它是一个库,任何这些东西都可以引用,交互并提供用户界面。 关键是FooBar没有受到任何这些用户界面的污染或偏见。 所以我不想将ApplicationUser移动到FooBar中,因为它来自Microsoft.AspNet.Identity命名空间,而FooBar不知道或不关心ASP.NET(或WPF或者接口恰好是什么)。

模式独立的entity framework代码第一次迁移

我很难使用针对Oracle数据库的Entity Framework迁移,因为模式名称包含在迁移代码中,而对于Oracle,模式名称也是用户名。 我的目标是实现与模式无关的Code First Migrations(能够为测试和生产环境提供一组迁移)。 我已经尝试过这种方法(使用Entity Framework 6.1.3): 1)我在Web.config中有模式名称: 2)我的DbContext将模式名称作为构造函数参数: public EdistributionDbContext(string schemaName) : base(“EdistributionConnection”) { _schemaName = schemaName; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.HasDefaultSchema(_schemaName); } 3)我必须为Entity Framework Migrations实现IDbContextFactory才能创建没有无参数构造函数的DbContext: public class MigrationsContextFactory : IDbContextFactory { public EdistributionDbContext Create() { return new EdistributionDbContext(GetSchemaName()); } } 4)我还将迁移历史表配置为正确的模式: public class EdistributionDbConfiguration : DbConfiguration { public EdistributionDbConfiguration() […]

entity framework创建空迁移但坚持我的模型不同

今天是悲伤的一天。 今天第一件事我看到EFexception说“ 自创建数据库以来,支持’DomainContext’上下文的模型已经改变了。 ” 它接近午夜,我仍然看到这个错误。 这是我职业生涯的终结 – ( 我很确定模型中没有任何变化,但错误出现了。 我尝试过创建一个新的迁移,它是空的: public void Up() { } public void Down() { } 应用此迁移没有任何好处 – 错误仍然存​​在。 我使用了常见的建议将初始化设置为null: Database.SetInitializer(null); 当我访问数据库时,它使错误消失了。 但这让我非常困扰 – 每当我尝试通过代码运行迁移时,我再次看到类似的错误: var configuration = new Migrations.Configuration(); configuration.TargetDatabase = new DbConnectionInfo(“correct connection string”, “System.Data.SqlClient”); var migrator = new DbMigrator(configuration); migrator.Update(); // <<– exception is thrown here Exception throw如下所示: […]

如何在Visual Studio 2015中管理EF 6迁移?

我使用Visual Studio 2013最新更新使用EntityFramework -Version 6.1.2启动了一个新的MVC项目。 我进行了几次迁移并更新了数据库。 在此之后,我在另一台计算机上检出了该项目,并使用Visual Studio 2015 CTP 6打开。 如果我进入包管理器控制台并尝试运行任何迁移命令,则无法识别它们: add-migrations:术语“add-migrations”不被识别为cmdlet,函数,脚本文件或可操作程序的名称。 检查名称的拼写,或者如果包含路径,请validation路径是否正确,然后重试。 如何在Visual Studio 2015中使用Entity Framework 6管理迁移?

entity framework迁移不包括DefaultValue数据注释(EF5RC)

我有一个看起来像这样的课程: [Table(“Subscribers”, Schema = “gligoran”)] public class Subscriber { [Key] public string Email { get; set; } [Required] [DefaultValue(true)] public bool Enabled { get; set; } } 创建迁移以包含此类时,我得到: public partial class AddSubscriberClass : DbMigration { public override void Up() { CreateTable( “gligoran.Subscribers”, c => new { Email = c.String(nullable: false, maxLength: 128), Enabled = c.Boolean(nullable: […]

如何通过迁移手动创建asp.net标识表?

我希望asp.net标识表存在于我的数据库中,并且在我实际运行mvc应用程序并创建用户之前生成相应的相应代码优先模型,以便我可以针对这些类编写一些逻辑在手之前。 有没有办法可以手动创建这些表/类与迁移?