EF(在WPF中)在首次使用时未创建数据库(CreateDatabaseIfNotExists不起作用)

我的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)));
        }
iCMS 回答:EF(在WPF中)在首次使用时未创建数据库(CreateDatabaseIfNotExists不起作用)

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/1823355.html

大家都在问