-
Notifications
You must be signed in to change notification settings - Fork 11
Quickstart
Paul Stovell edited this page Apr 15, 2020
·
22 revisions
This page gives you a brief overview of some of the core concepts in Nevermore. It's based on
Nevermore is designed to map documents. What's a document? Well, for our purposes it's a class. Here's an example of a document we'll be working with. The only assumption is that you'll provide an "Id" property which is a string (though it doesn't have to be a string).
class Person
{
public string Id { get; private set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
// Documents can have all kinds of things on them, including arrays,
// nested properties, and more.
// All these properties will be stored in the JSON blob.
public HashSet<string> Tags { get; } = new HashSet<string>();
public int[] LuckyNumbers { get; set; }
}
Note that the class has some properties with arrays or hashsets - things that don't get stored in columns in SQL very well. In Nevermore, anything that isn't written to a column is serialized as JSON and stored in a JSON
column.
Every document type gets a SQL table. Here's a script that creates the SQL table we'll use for this document.
CREATE TABLE [Person] (
[Id] NVARCHAR(50) NOT NULL CONSTRAINT [PK__Id] PRIMARY KEY CLUSTERED,
[FirstName] NVARCHAR(20) NOT NULL,
[LastName] NVARCHAR(200) NULL,
[Email] NVARCHAR(200) NOT NULL,
[JSON] NVARCHAR(MAX) NOT NULL
)
ALTER TABLE [Person] ADD CONSTRAINT [UQ_UniquePersonEmail] UNIQUE([Email])
Overview
Getting started
Extensibility
Misc