Страницы

Поиск по вопросам

вторник, 13 ноября 2018 г.

Entity Framework создаёт лишнюю таблицу

К примеру, имеется у меня контекст из двух сетов:
public class ConfigurationContext : DbContext { public ConfigurationContext() : base("ConfigurationContext") { Database.SetInitializer(new MigrateDatabaseToLatestVersion()); }
public DbSet Tags { get; set; } public DbSet Sources { get; set; } }
Таблица успешно генерируется, но почему-то содержит вместо двух таблиц - три! При этом у меня нет в проекте никаких сущностей, которые имели бы имя User, свойство Age или связь с такими объектами.

Эта лишняя таблица следует за мной повсюду. Стоит мне создать новый проект, изменить строку подключения, название или содержимое классов - она всегда создаётся.
В данный момент классы не содержат никаких свойств, кроме intового ключа. Таблица Users всё равно создается при каждой миграции.
Класс Configuration, отвечающий за миграцию также привожу ниже:
internal sealed class Configuration : DbMigrationsConfiguration { public Configuration() { AutomaticMigrationsEnabled = true; AutomaticMigrationDataLossAllowed = true; } }
Как ликвидировать лишнюю таблицу?


Ответ

Эту таблицу создает вовсе не Entity Framework, она создается сама при создании базы данных.
Дело в том, что в MS SQL Server есть такая штука как системная БД под названием model. При создании новой БД в нее копируются все объекты из model, и если в model есть какая-то таблица - она будет вас вот так преследовать. Просто удалите таблицу из model и больше не создавайте ее там.
Аналогичное поведение возможно и в PostgreSQL, там в таких случаях нужно проверить БД template1.

Комментариев нет:

Отправить комментарий