код структуры сущности сначала и пользователь базы данных - PullRequest
12 голосов
/ 05 июня 2011

У нас небольшая проблема при развертывании веб-приложения в другой среде. Мы создали базу данных приложения с использованием подхода Entity Framework Code First (автоматическое создание базы данных из Model). В этой среде разработки мы используем интегрированную защиту, а таблицы создаются под пользователем dbo. Столы похожи на
[DBO] . [MyTable]

Для нашей другой среды мы используем аутентификацию по имени пользователя / паролю для БД. Мы создали сценарии для таблиц и создали их в БД. Теперь они названы как
[myDbUser] . [MyTable]

При запуске приложения мы всегда сталкиваемся с проблемой
Неверное имя объекта 'dbo.myTable'.

Похоже, что код все еще пытается найти таблицу dbo, которой нет и, следовательно, не удается.

Может кто-нибудь пролить свет на эту проблему? Откуда Entity Framework получает этот префикс dbo?

Спасибо

Ответы [ 3 ]

17 голосов
/ 05 июня 2011

Укажите схему явно:

[Table("Users", Schema = "dbo")]
public class User { .. }

Или укажите схему БД по умолчанию для вашего пользователя - 'dbo'

1 голос
/ 22 октября 2014

Для указания схемы в свободном

protected override void OnModelCreating(DbModelBuilder modelBuilder)

modelBuilder.Entity<ClassName>().ToTable("TableName", "SchemaName");
0 голосов
/ 09 февраля 2013

Я недавно столкнулся с этой проблемой, так как мы поддерживаем несколько разных схем с одной и той же моделью.В основном я придумал, как передать имя схемы классам / методам, отображающим модель.Например, подклассы EntityTypeConfiguration принимают имя схемы в качестве аргумента конструктора и передают его вместе с жестко заданной строкой в ​​ToTable().

Более подробное объяснение см. Здесь: https://stackoverflow.com/a/14782001/243607

...