2012-02-20 2 views
2

У меня есть проект, в котором я использую EF 4.1.Entity framework - Недопустимое имя объекта

В контексте данных:

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

Entity модель класса:

[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) классов для определения таблиц, вы получите эту ошибку, если вы забыли прикрепить класс конфигурации для таблицы в Model Builder.

В моем случае это действительно сильно заглохло меня, потому что у меня уже была другая таблица (SomeThing), прекрасно работающая в этом классе контекста. Просто добавив новую таблицу (OtherThing), где все показалось, чтобы быть идентичным первому, я получил ошибку: Invalid object name 'dbo.OtherThings.

Ответ был в моем Context классе:

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"); 

     ... 
    } 
} 

Это длинная но я надеюсь, что это поможет указать кому-то в правильном направлении, не менее.

+0

Вы используете Unity? – JoshYates1980

Смежные вопросы