Подтвердить что ты не робот

Сущность Framework-кода и пользователя базы данных

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

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

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

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

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

Спасибо

4b9b3361

Ответ 1

Явная спецификация схемы:

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

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

Ответ 2

Чтобы четко указать схему

protected override void OnModelCreating(DbModelBuilder modelBuilder)

modelBuilder.Entity<ClassName>().ToTable("TableName", "SchemaName");

Ответ 3

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

Подробнее см. здесь: fooobar.com/info/369619/...