Если вам случится быть с помощью отображения конфигурации (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");
...
}
}
Это длинная но я надеюсь, что это поможет указать кому-то в правильном направлении, не менее.
Спасибо, Дана. Он работает –