К примеру, имеется у меня контекст из двух сетов:
public class ConfigurationContext : DbContext
{
public ConfigurationContext() : base("ConfigurationContext")
{
Database.SetInitializer(new MigrateDatabaseToLatestVersion<ConfigurationContext, Proj.Configuration.Migrations.Configuration>());
}
public DbSet<Tag> Tags { get; set; }
public DbSet<Source> Sources { get; set; }
}
Таблица успешно генерируется, но почему-то содержит вместо двух таблиц - три! При этом у меня нет в проекте никаких сущностей, которые имели бы имя User, свойство Age или связь с такими объектами.
Эта лишняя таблица следует за мной повсюду. Стоит мне создать новый проект, изменить строку подключения, название или содержимое классов - она всегда создаётся.
В данный момент классы не содержат никаких свойств, кроме intового ключа. Таблица Users всё равно создается при каждой миграции.
Класс Configuration, отвечающий за миграцию также привожу ниже:
internal sealed class Configuration : DbMigrationsConfiguration<ConfigurationContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = true;
}
}
Как ликвидировать лишнюю таблицу?
Эту таблицу создает вовсе не Entity Framework, она создается сама при создании базы данных.
Дело в том, что в MS SQL Server есть такая штука как системная БД под названием model. При создании новой БД в нее копируются все объекты из model, и если в model есть какая-то таблица - она будет вас вот так преследовать. Просто удалите таблицу из model и больше не создавайте ее там.
Аналогичное поведение возможно и в PostgreSQL, там в таких случаях нужно проверить БД template1.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей