模型用[必需的]属性更新
我的模型以前没有任何DataNotations,但我最近改变了这种情况,对某些属性应用了[Required]。 发生这种情况时,我的迁移代码开始引发异常,如:
无法应用未决更改,因为已禁用自动迁移。 要启用自动迁移,请确保DbMigrationsConfiguration.AutomaticMigrationsEnabled设置为true。
我假设有一些明确的迁移行为必须完成。 请澄清。
编辑 :AutomaticMigrationsEnabled = true不适合我,我很有趣如何使一些迁移脚本成为可能。
添加一个扩展DbMigrationsConfiguration的Configuration类,并将AutomaticMigrationsEnabled设置为true,示例类看起来像这样
namespace yournamespace
{
using System;
using System.Data.Entity;
using System.Data.Entity.Migrations;
using System.Linq;
internal sealed class Configuration : DbMigrationsConfiguration<YourDbContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = true;
}
}
}
然后按如下方式将配置类添加到DbMigrator实例中
namespace yournamespace
{
public class YourDataMigrator
{
public void MigrateData()
{
DbMigrationsConfiguration configuration=new Configuration();
DbMigrator dbMigrator = new DbMigrator(configuration);
try
{
dbMigrator.Update();
}
catch (Exception ex)
{
throw ex;
}
}
}
}
我认为这会解决你的问题
您可以通过执行以下脚本通过包管理器控制台创建迁移脚本:
PM> Enable-Migrations
其次是
PM> Add-Migration Initial
其次是
PM> Update-Database
最初在这里找到:http://www.snippetsource.net/Snippet/146/enable-automatic-migrations-in-ef-codefirst-c
不知道我是否在这里相同的页面,但我认为这是你问的。 我有AutomaticMigrations设置为false:
public Configuration()
{
AutomaticMigrationsEnabled = false;
}
我有一个Post类,如下所示:
public class Post
{
public int Id { get; set; }
public string Title { get; set; }
[Required]
public DateTime DateCreated { get; set; }
public string Content { get; set; }
public string Tags { get; set; }
public ICollection<Comment> Comments { get; set; }
}
它已经生成,但后来我意识到出于某种原因,我希望标题是必需的。
public class Post
{
public int Id { get; set; }
[Required]
public string Title { get; set; }
[Required]
public DateTime DateCreated { get; set; }
public string Content { get; set; }
public string Tags { get; set; }
public ICollection<Comment> Comments { get; set; }
}
我做了修改,快速构建,然后从PM控制台输入:
添加迁移AddPostAnnotation(名称可以是任何你想要的)
这会生成这个文件:
public partial class AddPostAnnotations : DbMigration
{
public override void Up()
{
AlterColumn("dbo.Posts", "Title", c => c.String(nullable: false));
}
public override void Down()
{
AlterColumn("dbo.Posts", "Title", c => c.String());
}
}
一旦到了这里,我只需从PM控制台运行Update-Database,然后发送更改。
链接地址: http://www.djcxy.com/p/90245.html上一篇: model updated with [Required] attributes
下一篇: Entity Framework Code First Migration in MySql DataBase