Scala 如何在SORM上删除和创建表?

Scala 如何在SORM上删除和创建表?,scala,sorm,Scala,Sorm,为了进行独立的测试,在每次测试之前删除并创建表或清理它们是很有趣的。使用SORM有什么简单的方法吗?您可以在initMode设置为的情况下为每个测试创建新实例,然后使用该方法释放所有实例的资源 类似以下的自定义函数可能会对您有所帮助: def withDb ( f : Instance => () ) { val db = new Instance ( ..., initMode = InitMode.DropAllCreate ) f(db) db.close() } 使用

为了进行独立的测试,在每次测试之前删除并创建表或清理它们是很有趣的。使用SORM有什么简单的方法吗?

您可以在
initMode
设置为的情况下为每个测试创建新实例,然后使用该方法释放所有实例的资源

类似以下的自定义函数可能会对您有所帮助:

def withDb ( f : Instance => () ) {
  val db = new Instance ( ..., initMode = InitMode.DropAllCreate )
  f(db)
  db.close()
}
使用它可以轻松地始终在新创建的实例的上下文中工作:

withDb { db =>
  db.save(...)
  db.query[...](...)
}

我的解决方案是定义重载方法,以便在不重新连接的情况下删除和重新创建表。我的实例定义:

class DatabaseTest extends Instance(...) {
  def reload = {
    connector.withConnection { connection =>
      connection.dropAllTables()
      Create.tables(mappings.values).foreach {
        t => connection.createTable(t)
      }
    }
  }
}

如果有一个清晰的方法可以在不再次建立连接的情况下删除并重新加载表,那就太酷了……好主意。但我们仍然不会急于在API中包含这样的低级功能。至少在收到好的反馈之前,我们可以考虑一个“测试工具包”API,这样就可以使用了。感谢您的快速反馈。一个套件只需一个功能是不够的,我认为其他功能还没有太多需求。同样,我们需要更多的反馈。