模型用[必需的]属性更新

我的模型以前没有任何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