2016-12-01 8 views
0

コード一次移行を有効にしましたが、いつかモデルプロパティを変更したので、アプリケーションを実行したときに次のエラーが発生しました。コード一次移行後のモデルの変更

無効な列名など...マイグレーション後にモデルを変更したためです。

は、これまでのところ私はこの問題は、私がモデルを更新したが、これらの変更は、親切に一致しないit..meansモデルプロパティとデータベースの列を修正するために私を助けて...データベーステーブルには適用されないことがあることを理解

移行が有効です。 自動移行をtrueに設定しましたが、機能しません。

Error

public class Floor 
{ 
    public int FloorID { get; set; } 
    public string Name { get; set; } 

    public virtual ICollection<Room> Rooms { get; set;} 
} 


public class Room 
{ 
    public int RoomID { get; set; } 
    public string Name { get; set; } 

    [Display(Name ="Room Rent")] 
    public decimal Rent { get; set; } 
    [Display(Name="Floor")] 
    public int FloorID { get; set; } 

    public int Seater { get; set; } 

    [Display(Name="Attach Bathroom")] 
    public Boolean AttachedBathRoom { get; set; } 

    public virtual Floor Floor { get; set; } 
    public virtual ICollection<Student> Students { get; set; } 
} 

public class Student 
{ 

    public int StudentID { get; set; } 
    public string Name { get; set; } 
    public int CNIC { get; set; } 
    public int Phone { get; set; } 
    [Display(Name="Floor")] 
    public int FloorID { get; set; } 
    [Display(Name ="Room No")] 
    public int RoomID { get; set; } 

    public string Address { get; set; } 

    public string Email { get; set; } 
    public string Department { get; set; } 

    public virtual Floor Floor { get; set; } 
    public virtual Room Room { get; set; } 
} 

答えて

0

まず、あなたのクラスであなたの主キーと外部キーを指定する必要があります。

主キーを指定するには、キー属性の前に[Key]を追加します。外部キーの場合は、それがリンクされているテーブルも追加する必要があります。あなたのルームクラスでは、次のようなものがあります:

[Key] 
[ForeignKey("Floor")] 
public int FloorID { get; set; } 

すべてのモデルのすべてのキーで同じことをします。

次に、新しい移行を追加してデータベースを更新する必要があります。あなたのパケットManagerコンソールで

、新しい移行追加するには、このように入力します。次に、このコマンドを使用してデータベースを更新

Add-Migration FooBar 

を:

Update-Database 
+0

私は「あなたの特定のコマンドを実行した後、次のエラーを得ましたテーブル 'Rooms'に対して複数のID列が指定されています。テーブルごとに1つのID列のみが許可されます。パッケージコンソールマネージャー。 –

+0

私が正しく理解していれば、部屋のFloorIdは外来キーですよね? –

+0

はいFloorIDはforiegnキーです。 –

関連する問題