2011-07-05 7 views
-3

データベースからテーブルの名前を変更しました。そこで私はエンティティの名前をFavoriからFavorisAffaireに変更しました。正常にコンパイルされました。しかし、今、私は自分のアプリケーションを実行すると、私は下のエラーを取得:インコヒーレントエラー:無効なオブジェクト名

無効なオブジェクト名「dbo.FavorisAffaires」

私は私の溶液中でこのFavorisAffairesを持っていませんでした!

私はFavorisAffaire(with ends endings)を持っています。私は私の解決策の背景に何かが間違っていると思う...私はすでにきれいな後に再構築を試みるが、問題はまだそこにある。

アイデア?

+0

これはASP.NET MVC 3と何が関係していますか?あなたの質問に適切な質問をしてください、私はあなたがEntity Frameworkについて話していると思いますか? –

+0

@ダリン:ASP.NET MVC3ソリューションです。しかし、あなたが正しいです、それはエンティティのフレームワークの問題に固有のようです。適切なタグを追加しました。 – Bronzato

+0

モデルをチェックしましたか? VSでEDMXを開き、FavorisAffaireテーブルをクリックし、Alt + F4(開いているプロパティ)を押します。プロパティには、エンティティセット名のフィールドがあります。ほとんどの言葉では、EFはテーブル名の末尾に「S」を付けて複数形を示します。あなたに意味がない場合は "S"を削除しますか? – Smudge202

答えて

2

これは、EFがデフォルトでどのように動作するかを示しています。それは複数の名前を使用します。これを無効にすることもできますし、単一のエンティティを適切なテーブルにマップさせることもできますが、そのすべては使用しているEFのバージョンによって異なります。

編集:

oops I forgot to mention that I used Entity Framework Code First.

はい、あなたの質問の非常に重要な部分を言及するのを忘れてしまいました。

これを行うにはいくつかの方法があります。

データ注釈:

[Table("FavorisAffaire")] 
public class FavorisAffaire 
{ ... } 

または流暢マッピング:

modelBuilder.Entity<FavorisAffaire>() 
      .ToTable("FavorisAffaire"); 

または複数形の規則を削除する(それは他の既存のテーブルのマッピングを破ることができるので、これはグローバルスコープを持っている)

modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 

大会を削除したら、DbSetの名前を確認してください

public DbSet<FavorisAffaire> FavorisAffaire { get; set; } 

テーブルが複数である必要があるため、単にテーブル名を変更してください。

0

Ladislav Mrnkaの回答に加えて、これらの変更を加えた後で、データベースを再作成していないと仮定します。だから、 "コードファースト"はあなたの新しいエンティティのテーブル名を生成しました。以前は存在しませんでした(正確には、 "Favoris"と名付けられました)。すでに古いスキーマを持つデータベースに接続し、データベースを再作成するようにEFに指示しなかった場合、探しているテーブル(FavoriAffairs)が存在する(存在しない)とみなされます。

"FavorisAffairs"に名前を変更することをお勧めします。それ以外の場合は、コードファーストでデータベースを再作成してください。これは、特定のデータベース初期化子を設定することで行われます。http://davidhayden.com/blog/dave/archive/2011/04/27/DatabaseInitializersEFCodeFirstDatabaseSetInitializer.aspx

関連する問題