2016-09-07 3 views
0

今日私は奇妙な状況に陥りました。新しいデータベースで既存のデータベースを更新しているうちに、ASP.NET - コードファーストデータベースの更新中に予期しない列が表示される

  • Raport.cs

    public class Raport 
    { 
        [DatabaseGenerated(DatabaseGeneratedOption.None)] 
        [Key] 
        public string raport_id { get; set; } //id raportu 
        public string userID { get; set; } 
        public DateTime creation_time { get; set; } 
        public DateTime last_modyfication { get; set; } 
    
    
        public virtual ICollection<ThrashType> ThrashType { get; set; } 
    
        public virtual UserFrontInfo UserFrontInfo { get; set; } 
    

    }

  • ThrashType.cs

    public class ThrashType 
        {  
        [Key] 
        //[DatabaseGenerated(DatabaseGeneratedOption.None)] 
        public int IdTrash { get; set; } 
        public string RaportId { get; set; } 
        public string ClassName { get; set; } 
    
        public int Quantity { get; set; }    
        public string Information { get; set; } 
    
        public virtual Raport Raport { get; set; } 
    
    } 
    
  • UserFrontInfo.cs:それはどのように見えた

    public class UserFrontInfo 
    { 
    
        [DatabaseGenerated(DatabaseGeneratedOption.None)] 
        [Key] 
        public string userId { get; set; } 
        public string userName { get; set; } 
        public string whereFromName { get; set; } 
    
        public virtual ICollection<Raport> Raport { get; set; } 
    } 
    

私はこのような状況に実行する前にやった: 1 /追加の移行 2 /私はこれを、その後新しいテーブルを追加するために必要なことから: Reset Entity-Framework Migrations (答えの下で第一コメント。より読みやすいバージョン):このためグレッグガムに

クレジット(https://stackoverflow.com/users/425823/greg-gum

問題:あなたは、あなたの移行をアップマックしていると、あなたは 、既存のテーブルを削除せずにそれをリセットしたいと思います。問題: EFが にテーブルを最初から作成したいので、データベース内の既存のテーブルを使用して移行をリセットすることはできません。対処:Migrations_Historyテーブルから既存の移行 を削除してください。 移行フォルダから既存の移行を削除します。追加マイグレーションリセットを実行します。これにより、テーブル の作成を含む の移行フォルダがマイグレーションフォルダに作成されます(ただし、実行されないため、エラーは発生しません)。 EFに スナップショットがあるようにMigrationHistoryテーブルの最初の行を作成する必要があります。現在の状態の の移行を適用すると、EFがこれを行います。ただし、データベースにテーブルがすでに存在するため、 を作成したばかりの移行は適用できません。だから移行 に行き、 "Up"メソッド内のすべてのコードをコメントアウトしてください。今すぐ update-databaseを実行します。移行を適用し(実際には データベースを変更しない)、MigrationHistoryにスナップショット行を作成します。 これで移行がリセットされ、通常の の移行が続行される可能性があります。

それから、すべてが完全に機能しましたが、ThrashTypeテーブルには「Raport_raport_id」という名前の列が追加されています。

答えて

0

答えは、ThrashTypeのフィールド名を "RaportId"から "raport_id"に変更し、dbo.ThrashTypeを削除し、上の手順を再作成しました。

「number_digits_migration_file」.csで上記のステップに1つ追加したことを指摘したいと思います。既存のテーブルだけをコメントアウトし、作成したいものを除外しました。

私は私の問題を解決しましたが、私はそれについて興味があります。誰もがCode Firstのアプローチにこのような経験を持っていますか?

素晴らしい一日を!

関連する問題