EF (в WPF) не создает базу данных при первом использовании (CreateDatabaseIfNotExists не работает) - PullRequest
1 голос
/ 01 августа 2020

My DataContext

 public RentalContext()
            : base(nameOrConnectionString: "RentalContext")
        {
            Database.SetInitializer<RentalContext>(new CreateDatabaseIfNotExists<RentalContext>());
        }

        public DbSet<User> Users { get; set; }
        public DbSet<Company> Company { get; set; }
        public DbSet<Tool> Tools { get; set; }
        public DbSet<Transaction> Transactions { get; set; }

При первом использовании не создавать базу данных. Когда я меняю код на

 public RentalContext()
            : base(nameOrConnectionString: "RentalContext")
        {
          Database.SetInitializer<RentalContext>(new DropCreateDatabaseIfModelChanges<RentalContext>());  
        }

        public DbSet<User> Users { get; set; }
        public DbSet<Company> Company { get; set; }
        public DbSet<Tool> Tools { get; set; }
        public DbSet<Transaction> Transactions { get; set; }
        public void SaveChanges() => base.SaveChanges();

, создается база данных. Но я выиграл, чтобы всегда создавать базу данных, если она не существует.

Я использую контейнер Unity, возможно, я где-то ошибаюсь

        {
            var context = new RentalContext();
            container.RegisterType<ICompanyRepository, CompanyRepository>();
            container.RegisterType<IToolRepository, ToolRepository>();
            container.RegisterType<ITransactionRepository, TransactionRepository>();
            container.RegisterType<IUserRepository, UserRepository>();
            container.RegisterType<IRentalContext, RentalContext>();

            container.RegisterType<MainWindow>(new InjectionConstructor(container, new TransactionRepository(context)));
            container.RegisterType<CompanyWindow>(new InjectionConstructor(container, new CompanyRepository(context)));
            container.RegisterType<CompaniesWindow>(new InjectionConstructor(container, new CompanyRepository(context)));
            container.RegisterType<UserWindow>(new InjectionConstructor(container, new UserRepository(context)));
            container.RegisterType<UsersWindow>(new InjectionConstructor(container, new UserRepository(context)));
            container.RegisterType<ToolWindow>(new InjectionConstructor(container, new ToolRepository(context)));
            container.RegisterType<ToolsWindow>(new InjectionConstructor(container, new ToolRepository(context)));
            container.RegisterType<ToolsForTransactionWindow>(new InjectionConstructor(container, new ToolRepository(context)));
            container.RegisterType<TransactionWindow>(new InjectionConstructor(container, new TransactionRepository(context)));
            container.RegisterType<StatisticWindow>(new InjectionConstructor(container, new TransactionRepository(context)));
        }
...