Setting up and tearing down databases
When you're working in a greenfield project and have a favorable situation of designing a database from the ground up, you have complete control over your database when it comes to integration tests, if you do it correctly.
While working on a greenfield project where database development is part of the project, you should adopt fluent migrations as a part of the development cycle. Writing change scripts for database changes has been around for a very long time, but it was Ruby on Rails that popularized migrations as a part of the software development lifecycle, and this has been adopted by .NET in the FluentMigrator
library.
Let's start by adding a reference to the FluentMigrator
library in our project:
Now we can write our first migration:
open FluentMigrator type Email = { FromAddress : string; ToAddress : string; Subject : string; Body : string } [<Migration(1L)>] type CreateEmailTable () = inherit Migration() let tableName...