The Marten library provides .NET developers with the ability to use the proven PostgreSQL database engine and its fantastic JSON support as a fully fledged document database. The Marten team believes that a document database has far reaching benefits for developer productivity over relational databases with or without an ORM tool.
Marten also provides .NET developers with an ACID-compliant event store with user-defined projections against event streams.
Before getting started you will need the following in your environment:
1. .NET Core SDK 2.1 (or higher)
Available here
2. .NET Framework 4.6 Developer Pack
Available here
3. PostgreSQL 9.5+ database with PLV8
You need to enable the PLV8 extension inside of PostgreSQL for running JavaScript stored procedures for the nascent projection support.
Ensure the following:
- The login you are using to connect to your database is a member of the
postgres
role - An environment variable of
marten_testing_database
is set to the connection string for the database you want to use as a testbed. (See the Npgsql documentation for more information about PostgreSQL connection strings ).
Help with PSQL/PLV8
- On Windows, see this link for pre-built binaries of PLV8
- On *nix, check marten-local-db for a Docker based PostgreSQL instance including PLV8.
Once you have the codebase and the connection string file, run the rake script or use the dotnet CLI to restore and build the solution.
You are now ready to contribute to Marten.
- Unit Tests rely on xUnit and Shouldly
- Bullseye is used for build automation.
- Node.js runs our Mocha specs.
- Storyteller for some of the data intensive automated tests
Description | Windows Commandline | PowerShell | Linux Shell | DotNet CLI |
---|---|---|---|---|
Run restore, build and test | build.cmd |
build.ps1 |
build.sh |
dotnet build src\Marten.sln |
Run all tests including mocha tests | build.cmd test |
build.ps1 test |
build.sh test |
dotnet run -p martenbuild.csproj -- test |
Run just mocha tests | build.cmd mocha |
build.ps1 mocha |
build.sh mocha |
dotnet run -p martenbuild.csproj -- mocha |
Run StoryTeller tests | build.cmd storyteller |
build.ps1 storyteller |
build.sh storyteller |
dotnet run -p martenbuild.csproj -- storyteller |
Open StoryTeller editor | build.cmd open_st |
build.ps1 open_st |
build.sh open_st |
dotnet run -p martenbuild.csproj -- open_st |
Run documentation website locally | build.cmd docs |
build.ps1 docs |
build.sh docs |
dotnet run -p martenbuild.csproj -- docs |
Publish docs | build.cmd publish-docs |
build.ps1 publish-docs |
build.sh publish-docs |
dotnet run -p martenbuild.csproj -- publish-docs |
Run benchmarks | build.cmd benchmarks |
build.ps1 benchmarks |
build.sh benchmarks |
dotnet run -p martenbuild.csproj -- benchmarks |
Note: You should have a running Postgres instance while running unit tests or StoryTeller tests.
Refer to the build commands section to look up the commands to run Mocha tests. There is also npm run tdd
to run the mocha specifications
in a watched mode with growl turned on.
Note: remember to run
npm install
Refer to build commands section to look up the commands to open the StoryTeller editor or run the StoryTeller specs.
The documentation content is the markdown files in the /documentation
directory directly under the project root. To run the documentation website locally with auto-refresh, refer to the build commands section above.
If you wish to insert code samples to a documentation page from the tests, wrap the code you wish to insert with
// SAMPLE: name-of-sample
and // ENDSAMPLE
.
Then to insert that code to the documentation, add <[sample:name-of-sample]>
.
Note: content is published to the
gh-pages
branch of this repository. Refer to build commands section to lookup the command for publishing docs.