2011-06-18 11 views
9

私のBierenテーブルからデータを取得しようとしているとき、私のコードがEntityCommandExecutionExceptionを与えています。間違ったtablenameを使用しているEntityFramework

「dbo.Bieren」という名前のため、「dbo.Biers」が見つかりませんでした。

データベースのテーブルの名前を変更するだけで簡単に修正できます。私のコードのエラーの回りでデータベースを修正するのは好きではありません。

テーブルの名前を変更する代わりに、エンティティフレームワークで正しいテーブルを使用するにはどうすればよいですか?

ありがとうございます。

+0

ただし、dbo.Biersまたはdbo.Bierensは例外ですか? –

+0

それは "dbo.Biers"と言います –

答えて

8

データベースファーストのアプローチでは、StriplingWarriorのソリューションがうまく機能します。しかし、コードファーストのアプローチを使用する場合は、ターゲットエンティティクラスでSystem.ComponentModel.DataAnnotations.TableAttributeを使用してエンティティクラスをデータベーステーブルにマップできます。

しかし、私たちは一般的に純粋なエンティティクラスを定義したいので、このやり方はやや面倒です。これを行うには、別のクラスに委ねるか、DbContextクラスのオーバーライドされたOnModelCreatingメソッドを次のように使用します。

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<Category>() 
     .ToTable("MyCategories"); 
    } 
+1

すばらしいスタッフ!どうもありがとう! –

5

Entity Frameworkモデルには、接続先のテーブル名と接続に関する情報があります。データベースファーストのアプローチを使用している場合は、データベースモデルを含むEDMXファイルが必要です。最も簡単な方法は、データベースからモデルを更新することです。

  1. オープンVisual StudioでEDMXファイル
  2. がバックグラウンドで右クリックし、「データベースからのアップデートモデル」
  3. ポイントデータベースでウィザードをクリックして、誤った「Biers」テーブルを削除し、そして
  4. は、ウィザードを終了し追加する「Bieren」テーブルを選択し、「Bieren」テーブルには、それを掘り下げることも可能である

表示されますBiersタイプのプロパティを変更し、テーブル名を手動で変更します。

+0

あなたの素早い返答をありがとう!しかし、私はデータベースベースの最初のアプローチを使用していません。私はモデルクラスを既存のデータベースに関連付けるコードファーストのバリエーションを使用しています。 (私はMVC3とEF4のスターターで、それは本から得ました)。これをコードファーストアプローチで修正する方法はありますか? –

+0

@ Wesz-T:jwJungが私にそれを打つように見える。乾杯。 – StriplingWarrior

+0

@StriplingWarriorこんにちは、私は関係(多対多)のためだけに使用されているテーブルでこれを行うことができる方法を知っていますか?他のテーブルと同じように、選択可能なオブジェクトとしてedmxには表示されません。 – Bassie

7

例えば、TableAttributeプロパティを使用してエンティティクラスを飾ります

[Table("Bieren")] 
関連する問題