EF Code First迁移不起作用

时间:2014-01-07 09:40:36

标签: c# asp.net asp.net-mvc entity-framework

我首先使用EF 6代码。 我已经更改了我的DbContext以将连接字符串传递给构造函数

public class EFDbContext : DbContext
{
    public EFDbContext(string connectionString)
        : base(connectionString)
    {
        Database.Connection.ConnectionString = connectionString;
    }
    public EFDbContext()
    {
    }

    public DbSet<MC_Users> MCUsers { get; set; }
}

并从Web.Config移动连接字符串

一切都很好。但是再向MC_Users添加一个属性, 不影响数据库,我的意思是代码首先不起作用。

 add-migration test    command created a new DbMigration class test
 update-database command applied it successfully

但我的数据库表没有改变

请帮忙

3 个答案:

答案 0 :(得分:1)

您正在更改本地sqlexpress数据库。您需要为Update-Database cmdlet提供自定义连接字符串:

更新 - 数据库 -ConnectionString

http://coding.abel.nu/2012/03/ef-migrations-command-reference/#Update-Database

此外,您可以使用DbMigrator类从代码进行迁移,而无需使用Update-Database cmdlet。使用DbMigrator类时,需要设置dbMigrator.Configuration.TargetDatabase以更改默认连接字符串。

var dbMigrator = new DbMigrator(new Configuration());
dbMigrator.Configuration.TargetDatabase = //New connection settings goes here.
dbMigrator.Configuration.AutomaticMigrationDataLossAllowed = true;
dbMigrator.Update();

http://msdn.microsoft.com/en-us/library/system.data.entity.migrations.dbmigrator(v=vs.113).aspx

答案 1 :(得分:1)

为了使您的迁移有效,您必须将连接字符串添加到设置为“启动项目”的项目的web.config / app.config中。设置完成后,在包管理器控制台上,您应该选择DbContext项目并尝试使用Update-Database方法。

答案 2 :(得分:1)

在这里留下答案,因为我遇到的问题并没有被接受的答案解决:

我在app.config中输入的密码错误,我在不同的环境中使用。 Get-Migrations没有为您提供有关失败凭据的错误,它只是告诉您&#34;没有迁移已应用于目标数据库&#34;,这极具误导性。

希望遇到此问题的其他人会发现它就像连接字符串中的拼写错误一样简单!

删除此内容的mod:

  

请不要在多个问题上发布相同的答案。发布一个好的答案,然后投票/标志将其他问题作为重复项结束。如果问题不重复,请定制您对问题的答案。

这不是另一个问题的重复答案;它是这个问题的替代答案。我在工作中遇到了这个问题,但是接受的解决方案并不适合我。这只是某人检查他们是否偶然发现这个问题的另一种选择。