Если вы используете классы отображения конфигурации (EntityTypeConfiguration
) для определения своих таблиц, вы получите эту ошибку, если забудете присоединить класс конфигурации для таблицы к построителю моделей.
В моем случае это немного озадачило меня, потому что у меня уже была другая таблица (SomeThing
), отлично работающая в этом классе Context.После простого добавления новой таблицы (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");
...
}
}
Это длинный выстрел, но я надеюсь, что это поможет направить кого-то еще в правильном направлении, по крайней мере.