我正在使用 EF codefirst 编写一些用于创建数据库的单元测试。在执行单元测试期间,该DBContext->OnModelCreating
方法仅执行 1 次,然后为其余测试缓存模型。
我希望能够通过尝试设置 ModelCaching 属性来分别为每个单元测试执行“OnModelCreating”,如文档中指定的那样:
// Remarks:
// Typically, this method is called only once when the first instance of a derived
// context is created. The model for that context is then cached and is for all
// further instances of the context in the app domain. This caching can be disabled
// by setting the ModelCaching property on the given ModelBuidler, but note that
// this can seriously degrade performance. More control over caching is provided
// through use of the DbModelBuilder and DbContextFactory classes directly.
protected virtual void OnModelCreating(DbModelBuilder modelBuilder);
但是,此模型构建器上没有这样的属性“ModelCaching”。
我还能如何禁用此模型缓存?测试一个接一个地运行良好,但是由于这种缓存,它们在连续运行时会失败。
更好地说,我怎样才能强制ApplicationDbContext -> OnModelCreating
为每个测试单独运行?现在它只运行一次,当它第一次用于一堆单元测试时。