您好我正在学习使用代码优先方法开发项目。我面临一个小问题,当我运行命令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()
{
}
}
}
答案 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
运行:
更新的数据库
确保将项目设置为存储连接字符串的默认值。
如果它没有返回任何错误,那么一切都很好。您应该能够看到更新已经发生,并且您的新更改必须已经反映出来。