2012-02-20 55 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方法是什麼?

嘗試刪除默認的複數表名:如果你碰巧使用的配置映射(EntityTypeConfiguration)類來定義你的表

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

謝謝,達娜。它的工作原理 – 2012-02-20 19:49:36

0

,因此當你忘記附上配置類得到這個錯誤對於模型構建器的表格。

在我的情況下,它真的讓我困惑了一下,因爲我已經有另一個表(SomeThing)在這個Context類中完美地工作了。在簡單地添加一個新表(OtherThing),其中一切似乎設置爲與第一個相同,我得到了錯誤:Invalid object name 'dbo.OtherThings

的答案是我的上下文類:

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類:

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

     this.ToTable("SomeThing"); 

     ... 
    } 
} 

而且我的新OtherThingMap類:

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

     this.ToTable("OtherThing"); 

     ... 
    } 
} 

這是一個漫長但我希望這有助於指出其他人正確的方向,a至少。

+0

您使用的是Unity嗎? – JoshYates1980 2015-05-13 13:24:51

相關問題