Before we write any code, there are a few things we need to get set up first.
This was written targeting .NET Core 2.2. Ensure you have the latest version installed; a beta or full version of 3.0 should also work. (If it does not, this comment will be updated.)
You are free to use Visual Studio if you prefer; be sure to have at least version 2019, though, as we'll be using some C# 7 and F# 4.6 features.
C# developers are familiar with NuGet, .NET's package management system. For our projects, though, we are going to use one developed by the F# community called Paket. It has several benefits, and the biggest one we'll be using is a single restore for all 5 projects' dependencies.
Paket can be installed in a project, but it can also be installed as a
dotnet tool. These instructions are writting assuming that it is installed this way. If you wish to install it at the project level, follow their instructions; otherwise, from a command prompt, enter
Then, create a
src directory. Within that directory, execute
This should create a
paket.dependencies file and a
paket-files directory; this is where we'll leave them for now. If you are following along and committing your work to a source code repository,
paket-files can be excluded from source control, but
paket.dependencies needs to be tracked.
NOTE: If you install it as a project-level tool, you'll need to run
.paket\paket [command]from the
srcfolder in places throughout the site where we say to run
paket [command]; with the tool version, though, you can run
paketanywhere from the
srcfolder and below.
RavenDB has downloads for each of the main operating systems on which .NET Core is supported. The .zip file can be extracted to a directory under your control, and
run.sh runs the server in interactive mode. You'll only need to run the database server when you're running an application or looking at data through RavenDB Studio, their outstanding web front end.
Running an extracted archive like this, the server will run for 7 days without a license. Under the "Pricing" tab on their site, they list the licenses that are available, including two that are free. Near the bottom of the page, you'll find the "Developer" license; this is completely acceptable for our uses in this project. Their staff will e-mail you a JSON blob that you can paste into the server, and it will recognize that it's licensed to a developer.