Database Storage
For each top level document type, Marten will generate database objects for:
- A database table called mt_doc_[document alias], where the document alias is typically derived from the class name of the top level document type
- A function called mt_upsert_[document alias]
- A function called mt_update_[document alias]
- A function called mt_insert_[document alias]
- A function called mt_overwrite_[document alias], an upsert function that bypasses any kind of configured optimistic concurrency checks
Overriding the Database Schema
By default, all of the document type tables will be created and used from the public schema. That can be overridden globally with this usage:
var store = DocumentStore.For(opts =>
{
opts.Connection("some connection string");
opts.DatabaseSchemaName = "other";
});
If you choose, you can override the default database schema name for the DocumentStore
by explicitly setting the schema for an individual document type through the MartenRegistry
fluent interface like this:
var store = DocumentStore.For(opts =>
{
opts.Connection("some connection string");
opts.DatabaseSchemaName = "other";
// This would take precedence for the
// User document type storage
opts.Schema.For<User>()
.DatabaseSchemaName("users");
});
Or by using an attribute on your document type:
[DatabaseSchemaName("organization")]
public class Customer
{
[Identity]
public string Name { get; set; }
}
Type Aliases
In the not unlikely case that you need to disambiguate table storage for two or more documents with the same type name, you can override the type alias either programmatically with MartenRegistry
:
var store = DocumentStore.For(_ =>
{
_.Connection(ConnectionSource.ConnectionString);
_.Schema.For<User>().DocumentAlias("folks");
});
or by decorating the actual document class with an attribute:
[DocumentAlias("johndeere")]
public class Tractor
{
public string id;
}