在某些情况下,在应用程序运行期间,我需要打开身份插入:
modelBuilder.Entity<Activity>().Property(p => p.Id).HasDatabaseGeneratedOption(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.None);
但是,由于 OnModelCreating 只执行一次,那么最好的方法是什么?是否可以重新创建模型?
在某些情况下,在应用程序运行期间,我需要打开身份插入:
modelBuilder.Entity<Activity>().Property(p => p.Id).HasDatabaseGeneratedOption(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.None);
但是,由于 OnModelCreating 只执行一次,那么最好的方法是什么?是否可以重新创建模型?
OnModelCreating 总是只会被调用一次。如果您需要重新创建模型,则必须手动创建DbModelBuilder
.
var builder = new DbModelBuilder(DbModelBuilderVersion.Latest);
// setup whole model
DbModel model = builder.Build(connection);
DbCompiledModel compiledModel = model.Compile();
// cache compiledModel for future usage - compilation is very expensive
var context = new DbContext(compiledModel);
你应该尽量避免这种情况。身份插入不适用于 EF,因此您很可能必须直接使用 SQL 插入数据,而无需更改映射。