实体框架自动迁移

时间:2015-01-31 07:25:34

标签: asp.net-mvc entity-framework

您好我正在学习使用代码优先方法开发项目。我面临一个小问题,当我运行命令Add-Migration时,它不识别更改,即使我已经在配置文件中启用AutomaticMigrationsEnabled

这是我的代码 ----------------------------- DbContext文件

 using System.Data.Entity;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace EntityCodeFirstSample.DataBaseFiles
    {
        class EntityCodeFirstSampleContext : DbContext
        {

            public EntityCodeFirstSampleContext()
                : base("name=DbConnectionString")
            {
                Database.SetInitializer(new MigrateDatabaseToLatestVersion<EntityCodeFirstSampleContext, EntityCodeFirstSample.Migrations.Configuration>("DbConnectionString"));
            }

            public DbSet<Publisher> Publishers { get; set; }
            public DbSet<Book> Books { get; set; }
            public DbSet<Sample> Samples { get; set; }
            public DbSet<Venkat> Venkats { get; set; }

        }
    }
----------------- Configurations file ---------------------------------
    namespace EntityCodeFirstSample.Migrations
    {
        internal sealed class Configuration : DbMigrationsConfiguration<EntityCodeFirstSample.DataBaseFiles.EntityCodeFirstSampleContext>
        {
            public Configuration()
            {
                AutomaticMigrationsEnabled = true;
                AutomaticMigrationDataLossAllowed = true;
            }

            protected override void Seed(EntityCodeFirstSample.DataBaseFiles.EntityCodeFirstSampleContext context)
            {

            }
        }
    }

-------------------------------------------模型文件 - -------------------

namespace EntityCodeFirstSample.DataBaseFiles
{
    [Table("Venkat")]
    public class Venkat
    {
        [Key]
        [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
        public int UserId { get; set; }
        public string UserName { get; set; }
        public int NotaryCode { get; set; }
    }
}

运行Add-Migration VenkatClass命令后,它正在生成迁移文件,如下所示

namespace EntityCodeFirstSample.Migrations
{
    using System;
    using System.Data.Entity.Migrations;

    public partial class VenkatClass : DbMigration
    {
        public override void Up()
        {
        }

        public override void Down()
        {
        }
    }
}

1 个答案:

答案 0 :(得分:0)

当AutomaticMigrationsEnabled = true时,您不必添加迁移,因为当您执行程序时,EF将动态处理任何更改并更新您的数据库。如果要控制,则设置AutomaticMigrationsEnabled = false。然后,您应该能够在调用Add-Migration时看到差异。

请阅读:https://msdn.microsoft.com/en-us/data/jj554735.aspx

然后阅读:https://msdn.microsoft.com/en-us/data/jj591621.aspx

运行:

  

更新的数据库

确保将项目设置为存储连接字符串的默认值。

如果它没有返回任何错误,那么一切都很好。您应该能够看到更新已经发生,并且您的新更改必须已经反映出来。