在 RavenDb 中使用域模型作为文档?

jga*_*fin 2 c# domain-driven-design nosql ravendb

我正在考虑使用我的域模型 (DDD) 作为 RavenDb 中的文档。这是一个坏主意吗?

如果没有,我正在使用TodoListId包含id 的 id 类(如)(在乌鸦的情况下todolists/3等)。我如何告诉 Raven/JSON.NET 将它们用作 ID?

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;}
}
Run Code Online (Sandbox Code Playgroud)

此外,当我使用 nhibernate 时,我通常将所有 setter 设置为 protected 以确保正确使用域模型。RavenDb 客户端也可以这样做吗?或者不会序列化工作呢?

todoList.Id.ToString()会回来todolists/1

Aye*_*ien 5

关于受保护的二传手,是的,这会起作用。关于 TodoListId,您需要提供一个ITypeConverter实现并将其注册DocumentStore.Conventions.IdentityTypeConvertors到 以使 RavenDB 了解如何在您的 Id 类型和 id 字符串之间进行转换。