EF Code, как зарегистрировать одно и то же имя таблицы с другой схемой?

Мы используем Entity Framework, Code First и в нашей базе данных есть несколько таблиц с одинаковым именем, но в разных схемах.

Я также разместил модели в двух разных пространствах имен.

Как я могу зарегистрировать эти таблицы в моем классе DbContext?

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Data.Schema1.Contact>().ToTable("Contact", "schema1");
    modelBuilder.Entity<Data.Schema2.Contact>().ToTable("Contact", "schema2");
}

Спасибо за вашу помощь заранее!

Ответ 1

У ваших классов должно быть другое имя, или вы должны использовать отдельный контекст для каждой схемы.

Причиной этого является модель EDM, используемая внутренне. Даже если вы используете код сначала, он по-прежнему создает модель EDM позади, и она должна следовать всем ее ограничениям и способам сопоставления классов POCO сущностям, определенным в модели CSDL. Объекты из EDM и классы POCO сопоставляются именем класса (без пространств имен). Из-за этого каждое имя класса, отображаемое в том же контексте, должно быть уникальным, а другое пространство имен не делает его другим именем класса.