所以我开始学习如何使用项目模板在MVC中使用Entity Framework,我遇到了一个问题。在我的HomeController中,我编写了下面的方法GenerateContractorCustomer,当调用它时,似乎用我创建的新模型覆盖数据库中的默认ASPNetUser表。
public void GenerateContractorCustomer()
{
using (var context = new ContractorCustomerContext())
{
ContractorModel contractor = new ContractorModel { ContractorID =1, ContractorName ="John"};
context.Contractor.Add(contractor);
context.SaveChanges();
}
}
我创建了一个DbContext:
public class ContractorCustomerContext : DbContext
{
public ContractorCustomerContext() : base("DefaultConnection") { }
public DbSet<ContractorModel> Contractor { get; set; }
public DbSet<CustomerModel> Customer { get; set; }
在IdentityModel中有默认值:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
}
我的问题是我需要对我的代码做些什么,这样当我调用GenerateContractorCustomer时它不会删除聋人的ASPNetUser表?
答案 0 :(得分:0)
如果您的模型类(实体类)已更改,那么您正在使用初始化程序来删除现有数据库并创建新数据库。因此,当模型类发生更改时,您不必担心维护数据库架构。要更改数据库initialization strategy,可以在Context类中使用Database类设置DB Initializer,如下所示:
public class ExampleDBContext: DbContext
{
public ExampleDBContext(): base("AConnectionString")
{
Database.SetInitializer<ExampleDBContext>(new CreateDatabaseIfNotExists<ExampleDBContext>());
}
}
如果您提供空值,则turn off此功能。如果您需要其他配置方法,请参阅提供的链接。