0

新しく作成したMVC4Webプロジェクトで、サーバーエクスプローラー(DataConnections ....マウスの右クリック)でテーブルを削除してから、パッケージマネージャーコンソール(PMC)で実行します。

update-database -verbose -force

同じデータベースに同じ名前の新しいテーブルを生成します。しかし、PMCは「ALTER」コマンドのみを試行しますが、これは私が実行したいことではなく、エラーを出力します。

オブジェクト「dbo.UserProfile」が存在しないか、権限がないため、オブジェクトが見つかりません。

どうすればこれを修正できますか?

アップデート

UserProfileクラスのデータモデルは次のとおりです

public class UserProfile
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int UserId { get; set; }
    public string UserName { get; set; }
    public string UserEmail { get; set; }
    [DefaultValue(false)]
    public bool IsActivated { get; set; }        
}

そして、これが設定ファイルのシードメソッドでテーブルを初期化するためのコードです

    WebSecurity.CreateUserAndAccount("Administrator", "admin",
                new
                {                        
                    UserEmail = "admin@gmail.com",
                    IsActivated=true

                }                   
                );
4

1 に答える 1

3

EF Migrations expects that either you are in charge (you can use the -Script option to have Migrations generate scripts rather than run DDL directly), or that it is in charge. Mixing and matching does not work.

If you know the structure of UserProfile (perhaps you saved a script?) you can manually re-create it as it was before your change, then allow EF Migrations to apply the migration again.

If you have an appropriate backup of the database, restore that and retry.

If not, you can drop and re-create the database, then do an initial migration.

Personally I always have EF Migrations script the migrations (-Script option). I then apply the script myself. That way, I have everything I need to do a controlled migration in QA and PROD environments. I just don't have enough trust in EF Migrations to let it auto migrate production data (not that Migrations is bad, but a minor bug could wipe out production data. Not a risk I'm willing to take.)

于 2013-02-04T18:48:53.847 に答える