2016-04-28 1 views
2

EF code first approachを使用したいと思います。私はデータベースを追加し、テーブルを生成します。それから私は、このクラス私は、これらのコマンドを実行します。EFコードでマッピングされていないテーブル

public class Invitation 
    { 


     [Key] 
     public int Id { get; set; } 

     [DefaultValue(false)] 
     public bool State { get; set; } 

     public string Mail { get; set; } 

     public string Tel { get; set; } 

     public string Name { get; set; } 

     public string Qr_code { get; set; } 

    } 

追加:

アドオン移行秒

更新データベースを第二のクラスの

UpDown方法移行は空です!テーブルはデータベースに追加されません。

コンテキスト

public class ApplicationContext: IdentityDbContext<ApplicationUser> 
    { 
     public ApplicationContext() 
      :base("DefaultConnection") 
     { 
      Database.SetInitializer<ApplicationContext>(new CreateDatabaseIfNotExists<ApplicationContext>()); 
     } 

     public static ApplicationContext Create() 
     { 
      return new ApplicationContext(); 
     } 

     protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 
      base.OnModelCreating(modelBuilder); 
     } 
    } 

だから私はこの問題の理由は何

  1. を知っておく必要がありますか?
  2. どうすれば修正できますか?あなたはこれを追加したら、移行スクリプトで追加したい、Entity Frameworkのテーブル(複数可)を追加する必要があります(DbSet<Invitation>

    を追加する新しいテーブルについてEntity Frameworkのを伝えるのを忘れよう

+3

「DbSet」の値は表示されません...コードを忘れましたか? –

+1

Yepp、 'DbSet '値がありません。それが_Up()_と_Down()_が空の理由です。 – schlonzo

+0

@ MarkC。はい、私は文脈でそれを追加することを忘れてしまいました。あなたのコメントを投稿することを忘れました –

答えて

2

が見えますそれぞれ、

public DbSet<Invitation> Invitations { get; set; } 

および/または

public IDbSet<Invitation> Invitations { get; set; } 

をし、別の移行スクリプトを実行します。

合計では、この行を追加する必要があります。

1

最初の移行を作成する必要があると思います。これは、(既存の移行履歴を破棄させていただきます場合にのみ使用しますので、これは、既存の移動履歴をクリアすることに注意してください)あなたの最初移行の場合

  1. は、溶液中
  2. 削除をあなたの移行フォルダを削除しますあなたの変更(DbContextから新しいテーブルへの参照を削除してください)。 -IgnoreChangesはこのステップを冗長にする可能性があることに注意してください。しかし私は確かに言えません。
  3. 今すぐ(パッケージマネージャコンソールの)移行を可能にする(それが最も可能性の高い存在しませんが、あなたが先に行くとそれがある場合はそれを削除することができます)、データベースから

    Enable-Migrations 
    

をMigrationHistoryテーブルを削除します

その後、最初の移行を作成します。これは、空のメソッド

Add-Migration Initial –IgnoreChanges 
Update-Database 

で既存のスキーマに一致する移行を作成します。その後、あなたのDbContextはあなたの新しいテーブルを参照して更新し、変更を適用する必要があり、あなたがする必要があり、

Add-Migration MyChanges 
Update-Database 

を行うその他の変更を加えますデータベースに転送します。必要な場合はmore info over at MSDNです。あなたのApplicationContextクラスに

public DbSet<Invitation> Invitations { get; set; } 

を以下を追加

+0

OPの質問で、彼らは言った:「私はデータベースを追加してテーブルを生成する」..これはすでに完了していると仮定します –

+0

私は初期データベース作成は実際に移行を作成します。私は、最初のマイグレーションを問題なく実行しています(空のメソッドと同様の現象があります)。あなたがこのケースで言ったように、問題は欠落した 'DbSet'であるように見えます。私はあまりにもあいまいさのために私の答えをここに残すことを計画していましたが、私はそれが問題を雲を消すことができますか? – Tone

+0

本当ですか?何か例外や何かあったのですか?私はあなたがそれをまったく削除すべきではないと思います!他の人もこのシナリオに参加する可能性は非常に高いです(この質問の場合はそうは思わない) –

2

てみ続いて実行されています。

Enable-Migration 
Add-Migration note_of_changes 
Update-Database 
+1

「変更」の代わりに、「AddDbSet」= P –

+1

という意味のノートを追加することができます。ハハ – bolt19

関連する問題