I think it might be a good idea to pass the model to this method in the same way it is passed to CreateTables. This would provide greater flexibility in how providers implement the HasTables method because the provider would have model tables to use. It might then be that for some providers the heuristic for HasTables resolves to "do any/all of the tables I need to be there exist."