2016-04-25 14 views
0

CodeFirstで構築したデータライブラリがあります。 これでSQLコマンドを実行し、そのデータベースに新しいテーブルを追加しました。 しかし、私は自分のLINQクエリで使用できるように、コードの最初のコードでその生成されたオブジェクトクラス、そのDBContext定義なども見たいと思います。 それでは、私がやったことは、このMSDNのページから番号3の方法以下の通りであった: https://msdn.microsoft.com/en-us/library/jj200620.aspxCodeFirstで作成されたDBContextに新しいテーブルを追加する

しかし、それは右のそれをしませんでした。例えば、それはがあるように使用されるすべての私の他のテーブルは次のように定義され、たとえば、DBContext.csファイルにこの新しいテーブルの任意の定義を追加しませんでした:

DbSet<Zipcode> Zipcodes { get; set; } 

をしかし、それは私のために何かを追加していません。

これを行う正しい方法は何ですか?

答えて

0

私は、単に新しいテーブルを追加し、手動で作業することなく既存のモデルで「プラグアンドプレイ」する方法を知らないのです。私の知っている2つのオプションがあります。

  1. は手動でクラスとしてテーブルを作成して、モデル内のOnModelCreating方法でDbSetとエンティティを追加するDBからのコードファーストを使用してモデルを再構築して、追加されたテーブル
  2. が含まれます
+0

私は実際に上記の番号1から始めました。つまり、DbSet定義を自分のコンテキストに手動で追加する必要がありますか? – Travolta

+0

いいえ、その場合はDBSetを手動で追加する必要はありません。 #1ルートでは、元のモデルとすべての関連クラスを最初に削除します。次に、最初にモデルを作成したときと同じように、必要なすべてのテーブルを持つ新しいモデル(オリジナルの場合は同じ名前)を作成します。元のモデルを削除して、必要なすべてのテーブルを含む新しいモデルを追加する場合は、DBSetsを追加する手作業はありません。 –

+0

ok元のモデルを削除するにはどうすればよいですか?このことは、POCOクラスのほとんどがDB内のテーブルの名前と同じ名前であることがわかります。 – Travolta

0

データベースからのコードは、すでにデータベースを持っている場合にのみ機能します。新しいテーブルを追加する場合は、Code-First(単独)を使用する必要があります。つまり、エンティティジップコードをモデルに追加すると、DbSetからDbContextにコンパイルした後データベースにテーブルを生成します。

関連する問題