EF Code: как зарегистрировать одно и то же имя таблицы с другой схемой? - PullRequest
12 голосов
/ 17 декабря 2011

Мы используем 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 Ответ

17 голосов
/ 18 декабря 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...