Tag: ef migrations

如何在代码第一个ASP.NET MVC 5应用程序中正确设置一对多关系中的外键约束

所以我有一个文档表和ApplicationUser表。 并且一个用户可以使用代码第一种方法上传多个文档和外键约束。 但问题是我能够保存文档而无需在Documents表中分配UserID外键ID 。 我在这里想念的是什么 以下是我的新手尝试。 ApplicationUser模型: 它是框架提供的标准模型。 文件型号: public class Document { public int Id { get; set; } [StringLength(255)] public string FileName { get; set; } [StringLength(100)] public string ContentType { get; set; } public byte[] Content { get; set; } [StringLength(255)] public string DocumentName { get; set; } public string UserId { […]

如何在使用基于代码的迁移时停止添加迁移检查我的数据库没有挂起的迁移?

我正在研究使用基于代码的EF迁移来获取不使用EF的产品。 一切都运行良好,除了命令: Add-Migration MyTestMigration 输出以下消息: 无法生成显式迁移,因为以下显式迁移尚未处理:[201206260845338_DannyTest]。 在尝试生成新的显式迁移之前应用挂起的显式迁移。 原因是连接字符串在构建时是未知的,并且EF在。\ SQLExpress上随机创建了一个名为“MyContextName”的数据库。 我无法应用挂起的迁移,因为它引用了此数据库中不存在的数据库表 – 我们只是尝试使用迁移作为执行脚本的方式; 所以问题是: 如果我们没有使用自动迁移(我们有EnableAutomaticMigrations = false),为什么Add-Migration要求数据库是最新的, 即使它对生成的(空)迁移没有任何影响 ? 我发现很难相信MS在这么多用法的情况下不打算使用这个用例; 唯一“破碎”的东西是不影响任何行为的validation。 除了创建我们自己的Add-Migration命令之外还有什么方法可以复制EF的命令,但跳过(看似不必要的)DB最新检查? 我试过传递各种论点,但到目前为止还没有成功。 编辑: 我实际上找到了解决这个问题的更好方法,但它并不是这些问题的真正答案,所以在这里添加它。 希望有时间把它变成博客文章 ! 我想使用Add-Migration的唯一原因是因为DbMigration带来的所有guff; 但我意识到,通过基类,我们基本上可以通过让基类从属性自动生成迁移ID来消除所有这一切。 目标对于我们的所有迁移都是相同的,因为模型状态不会改变。 现在,我们只是手动创建这样的迁移(构建ID需要日期,以便EF以正确的顺序应用它们): [Migration(2012, 6, 27, 12, 00, “Add new xxx fields for yyy”)] internal class MyNewMigration : MyDbMigration { public override Up() { // … } public […]

在EF5 Code First中更改列默认值

我正在尝试使用CF为现有数据库构建模型。 我有一个专栏,我忘了设置一个合理的默认值。 而不是通过改变它来破坏初始迁移的纯度,我只是想我创建另一个迁移(这是迁移的目的,对吧?:) public override void Up() { AlterColumn(“Config”, “DefaultTaxPerDollar”, c => c.Decimal(nullable: false, precision: 19, scale: 5, defaultValue: 0.087m)); } public override void Down() { AlterColumn(“Config”, “DefaultTaxPerDollar”, c => c.Decimal(nullable: false, precision: 19, scale: 5, defaultValue: 0.0m)); } 但是这会产生Column already has a DEFAULT bound to it. 来自SQL Server的错误。 如何使用CF迁移更改默认值? 或者,如何简单地删除默认值(然后使用不同的值重新创建它)? 编辑: 这是SQL生成的: ALTER TABLE […]

在迁移中更改数据Up方法 – entity framework

我在现有模型中添加了一个新属性。 它是一个bool属性,默认值为true。 此表中存在现有数据,我想在Up方法中创建新字段后立即将一个特定行的新属性设置为false。 public override void Up() { AddColumn(“dbo.RequestValidationErrors”, “IsBreaking”, c => c.Boolean(nullable: false)); using (Context ctx = new Context()) { var validation = ctx.RequestValidationErrorSet.FirstOrDefault(x => x.WordCode == “RequestValidationError.MoreThanOneItemFound”); if (validation != null) { validation.IsBreaking = false; ctx.SaveChanges(); } } } 这样,EF在说话时抛出错误 System.InvalidOperationException:自创建数据库以来,支持’DbContext’上下文的模型已更改。 考虑使用Code First Migrations来更新数据库 是否可以在此更改数据库,还是应该在其他地方更改数据库?

如何从代码中应用迁移(EF Core)

如何从代码中应用迁移 对于EF6工作代码 Database.SetInitializer(null); var settings = new MigrationsConfiguration(); var migrator = new DbMigrator(settings); migrator.Update(); 如何在EF Core中制作类似的?

使用entity frameworkCode-First创建表,运行时

是否可以通过使用EF Code-first在运行时创建表? 我可以使用C#CodeDOM(reflection)在运行时创建我的模型类,但我无法在运行时设置我的Dbcontext类的dbSet属性。 你的想法是什么? 什么是在运行时动态创建表的最佳解决方案?…有些人对我说,唯一的方法是使用经典的ADO.Net 。

entity framework,自动应用迁移

我首先使用Entity Framework代码,并通过以下代码设置AutomaticMigrationsEnabled为true: Database.SetInitializer(new MigrateDatabaseToLatestVersion()); ////////////////////////////////// public class MigrateDBConfiguration : System.Data.Entity.Migrations.DbMigrationsConfiguration { public MigrateDBConfiguration() { AutomaticMigrationsEnabled = true; AutomaticMigrationDataLossAllowed = true; } } 在第一次运行项目时,它可以正常工作并创建数据库和表。 在我更改模型并删除一些字段或添加新字段并运行Add-Migration之后,生成了迁移类但在运行项目之后发生此exception: EntityFramework.dll中出现“System.InvalidOperationException”类型的exception,但未在用户代码中处理 附加信息:自创建数据库以来,支持“DBContext”上下文的模型已更改。 编辑:像arturo menchaca的回答我改变可能代码如下: protected override void OnModelCreating(DbModelBuilder modelBuilder) { Database.SetInitializer(new MigrateDatabaseToLatestVersion<DBContext, MigrateDBConfiguration>()); … 但例外情况是: 数据库中已经有一个名为“MyTable”的对象。 我想申请迁移。

使用不同的程序集添加迁移

我正在ASP.NET CORE 1.0.0中做一个项目,我正在使用EntityFrameworkCore。 我有单独的程序集,我的项目结构如下所示: ProjectSolution -src -1 Domain -Project.Data -2 Api -Project.Api 在我的Project.Api是Startup类 public void ConfigureServices(IServiceCollection services) { services.AddDbContext(); services.AddIdentity() .AddEntityFrameworkStores() .AddDefaultTokenProviders(); } DbContext在我的Project.Data项目中 public class ProjectDbContext : IdentityDbContext { public ProjectDbContext(DbContextOptions options) : base(options) { } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { var builder = new ConfigurationBuilder(); builder.SetBasePath(Directory.GetCurrentDirectory()); builder.AddJsonFile(“appsettings.json”); IConfiguration Configuration = builder.Build(); optionsBuilder.UseSqlServer( […]

如何在EntityFramework Codefirst中以编程方式使用迁移?

我正在使用EF Code First的项目。 我正在尝试使用迁移function。 我不想使用Package Console Manager。 如何以编程方式执行“添加 – 迁移”和“更新 – 数据库”? add-migration TestMigration01 -force update-database

如何忽略EF 4.3迁移中的表/类

我正在测试EF 4.3(测试版) 我有一些新的类应该生成db表和列。 从一个旧项目我的架构中有一些旧表,我想通过EF访问。 声明所有类。 为了访问旧表,有一个映射的poco。 db迁移也尝试创建旧表。 如何设置此类/表不是迁移的一部分,而是ef模型的一部分? xxx.OnModelCreating() { modelBuilder.Ignore(); } 从模型中删除整个类。 最后我无法通过dbContext使用它进行访问。 我喜欢使用自动迁移。 我尽量避免将旧的db表完全迁移到EF类。 (是的,我知道有生成器)有120个表,旧的应用程序仍然使用它们。 一些仅与EF(新应用程序)一起使用的新表。 有3个常用的表格。 那些不应该创建,但可以通过ef访问。