2013-03-13 11 views
12

私はちょうどコードmsdnから最初の新しいデータベースエンティティのフレームワークを練習していた、私は主キーのないテーブルが最初に新しいデータベースEFのコードで作成できるかどうか知りたいですか?エンティティフレームワークにプライマリキーのないテーブルを持たせることはできますか?

+2

http://stackoverflow.com/questions/1944366/how-do-you-update-a-table-with-a-foreign-key-to-another-table-in-ado-net-entity – Hidden

+1

Have http://stackoverflow.com/questions/4068920/code-first-ctp4-table-with-no-primary-key – Francesco

答えて

11

エンティティフレームワークは、更新操作または削除操作を行ったときにオブジェクトを追跡するためのキーを知っている必要があるため、できません。

はとにかくそれは主キー

+3

ok wahid、あなたが正しいです、PKなしのテーブル、更新や削除のような一般的な操作ユニークでPKではない特定の列を使用するようにEFに指示できれば、この操作(更新、削除)はEFで実行できますか? – Prateek

+1

列はPK –

13

ありEFは、データベースで何ができるかとの間に大きな差があり、そしてどのようなデータベースで可能であるなしにテーブルを持つことは良い考えではありません。

ほとんどのデータベースでは、テーブルにプライマリキーがなくても構いません。大部分のデータベースでは、クラスタ化インデックス/索引構成表なしの表(または他のデータベース・システムではこれを特定の用語としています)を表に含めることもできます。

何も問題はありません。また、PKなしのテーブルを作成することは悪い考えであると述べるべきではありません。

いつものように、それは特定のテーブルのニーズと使い方に依存します。例えばログテーブルは、PKを必要としません。それは決してFKとして使用されないので、それは何を使用していますか?

ボトムラインのEFでは、キーがないテーブルはサポートされていませんが、いくつかの奇妙な回避策がありますが、私が見たことはありません。それは残念です。

+0

でなければなりません。 1つのレコードを持つ設定テーブルがあります。本当にPKは必要ありません。 –

4
  1. Entity Frameworkの必見は、そのモデルのテーブルをエンティティ(POCOクラス)で識別キーを持っています。
  2. Entity Frameworkで定義するキーは、NOTが基になるデータベース(たとえばSQLテーブル)に存在する必要があります。

SQLテーブルにプライマリキーがない場合でも、それをEntity Frameworkでモデル化できます。そのエンティティのキ​​ーを定義するだけで済みます。結合されたときにエンティティのコレクション内のそのインスタンスを一意に識別するエンティティ上の1つまたは複数の(おそらくすべての)列を選択します。これは、エンティティを更新または削除する場合にのみ重要であることに注意してください。エンティティを変更するには、コレクション内の他のエンティティと一意に識別する必要があります。検索/選択と追加/挿入はこの一貫性を必要としません。

+0

でも、テーブルを追加することはできません – dangalg

関連する問題