2012-02-20 8 views
2

私はEF 4.1を使用するプロジェクトを持っています。データコンテキストでエンティティフレームワーク - 無効なオブジェクト名

public DbSet<Customer> Customer { get; set; }  
protected override void OnModelCreating(System.Data.Entity.ModelConfiguration.ModelBuilder modelBuilder)  {   } 

エンティティモデルクラス:

[Table("User",SchemaName="dbo")] 
public class User{ 
public int Id { get; set; } 
public string FirstName { get; set; } 
public string LastName { get; set; } 
} 

私は、エラー以下になったアプリケーションを実行すると。

無効なオブジェクト名dbo.User

なぜ?なにが問題ですか?

答えて

2

あなたのOnModelCreatingメソッドには何がありますか?

デフォルト複数のテーブル名を削除するようにしてください:

modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
+0

ありがとう、ダナ。それは動作します –

0

コンフィギュレーションマッピング(EntityTypeConfiguration)あなたのテーブルを定義するクラスを使用することが起こる場合は、Configurationクラスを添付するのを忘れた場合、あなたはこのエラーを取得しますモデルビルダーにテーブルのために。

私のケースでは、私はすでにこのコンテキストクラス内で完全に動作する別のテーブル(SomeThing)を持っていたので、ちょっと私を困らせました。すべてののように見える新しいテーブル(OtherThing)を最初に追加した後、私はエラーを受け取りました:Invalid object name 'dbo.OtherThings

答えは私のContextクラスにいた:それは長いです

public class OtherThingMap : EntityTypeConfiguration<OtherThing> 
{ 
    public OtherThingMap() 
    { 
     ... 

     this.ToTable("OtherThing"); 

     ... 
    } 
} 

public class SomeThingMap : EntityTypeConfiguration<SomeThing> 
{ 
    public SomeThingMap() 
    { 
     ... 

     this.ToTable("SomeThing"); 

     ... 
    } 
} 

そして、私の新しいOtherThingMapクラス:参考

public DbSet<SomeThing> SomeThings { get; set; } 
public DbSet<OtherThing> OtherThings { get; set; } 

... 

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Configurations.Add(new SomeThingMap()); 

    // OOPS -- Forgot to add this!! 
    modelBuilder.Configurations.Add(new OtherThingMap()); 
} 

、ここに私のSomeThingMapクラスです私はこれが他の人を正しい方向に向けるのを助けてくれることを願っています。少なくとも。

+0

ユニティを使用していますか? – JoshYates1980

関連する問題