Если вы не укажете схему для своих сущностей, EF сгенерирует DDL без указания схемы. А в SQL Server это означает, что объект будет создан в схеме пользователя по умолчанию. Обычно схема пользователя по умолчанию должна быть dbo
, но если это не так, тогда объект будет создаваться в другой схеме.
И в SQL Объекты сервера принадлежат (опять же по умолчанию) владельцу схемы, в которой они созданы.
Итак, настройте таблицы, которые должны быть созданы в схеме dbo
, или настройте схему по умолчанию для вашего пользователя на dbo
, и объекты будут созданы в dbo
схема и принадлежит dbo
.
например, в OnModelCreating, добавьте
foreach (var et in modelBuilder.Model.GetEntityTypes())
{
et.SetSchema("dbo");
}
или в SQL
alter user [yourdomain\youruser] with default_schema=dbo
Обратите внимание, что если вы владелец базы данных или системный администратор, вы всегда подключаетесь к базе данных как dbo
, и ваш неквалифицированный DDL будет создавать объекты в схеме dbo
.
Я хочу, чтобы таблицы принадлежали идентификатор службы
Обычно вы не хотите, чтобы объекты, принадлежащие идентификатору, использовались приложением для подключения, так как этот идентификатор должен быть в роли с наименьшими привилегиями. Например, нет возможности удалять таблицы или создавать триггеры. Обычно объекты должны просто принадлежать dbo
.