Страницы

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

воскресенье, 22 декабря 2019 г.

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

#c_sharp #net #entity_framework #codefirst


К примеру, имеется у меня контекст из двух сетов:

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;
    }
}


Как ликвидировать лишнюю таблицу?
    


Ответы

Ответ 1



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

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

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