Polyglot Persistence Powered by .NET and PostgreSQL
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.
Note that current stable version of Marten 2.x is compatible with Npgsql 3.x. If you are looking for a Marten version compatible with Npgsql 4.x, you can use the Marten 3.x alpha version available in NuGet and also you can checkout the dev branch.
Working with the Code
Before getting started you will need the following in your environment:
- Access to a PostgreSQL 9.5+ database.
- An environment variable of
marten_testing_databaseset 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 )
- You will also need to make sure that the login you are using to connect to your databasee is a member of the
- Ensure you have installed .NET Core SDK 2.0
- 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
- Rake is used for build automation. It is not mandatory for development.
- Node.js runs our Mocha specs.
- Storyteller for some of the data intensive automated tests
To run mocha tests use
rake mocha or
npm run test. There is also
npm run tdd to run the mocha specifications
in a watched mode with growl turned on.
Note: remember to run
To open the Storyteller editor, use the command
rake open_st from the command line or
rake storyeller to run the Storyteller specs. If you don't want to use rake, you can launch the
Storyteller editor after compiling the solution by the command
packages\storyteller\tools\st.exe open src/Marten.Testing.
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, either use the rake task
rake docs or the batch script named
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
Then to insert that code to the documentation, add
Note: content is published to the
gh-pagesbranch of this repository by running the
# run restore, build and test rake # run all tests including mocha tests rake test # running documentation website locally rake docs
DotNet CLI Commands
# restore nuget libraries dotnet restore src\Marten.sln # build solution dotnet build src\Marten.sln # running tests for a specific target framework dotnet test src\Marten.Testing\Marten.Testing.csproj --framework netcoreapp2.0 # mocha tests npm install npm run test # running documentation website locally dotnet restore docs.csproj dotnet stdocs run