Использовать модель домена в качестве документа в RavenDb? - PullRequest
2 голосов
/ 01 февраля 2012

Я подумываю использовать мои доменные модели (DDD) в качестве документов в RavenDb. Это плохая идея?

Если нет, я использую классы идентификаторов (например, TodoListId), которые содержат идентификатор (в случае воронов todolists/3 и т. Д.). Как я могу сказать Raven / JSON.NET использовать их в качестве идентификатора?

public class TodoListId
{
    public class TodoListId(string id)
    {
        //validate the id and set internal var
    }

    //override ToString to return the id
}

public class TodoList
{
    public TodoList(TodoListId id)
    {}

    public TodoListId Id{get;set;}
    public TodoListId Parent {get;set;}
    public string SomeBasicProperty {get;set;}
}

Кроме того, когда я использую nhibernate, я обычно устанавливаю все сеттеры на защищенные, чтобы убедиться, что доменные модели используются правильно. Это возможно и с клиентом RavenDb? Или тогда сериализация не будет работать?

todoList.Id.ToString() вернется todolists/1.

1 Ответ

4 голосов
/ 02 февраля 2012

Что касается защищенных сеттеров, да, это будет работать.Что касается TodoListId, вам нужно предоставить реализацию ITypeConverter и зарегистрировать ее с помощью DocumentStore.Conventions.IdentityTypeConvertors, чтобы RavenDB понял, как выполнять перевод между вашим типом Id и строкой id.

...