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

时间:2012-02-01 11:19:14

标签: c# nosql domain-driven-design ravendb

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

如果没有,我正在使用包含id的id类(如TodoListId)(在ravens case 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;}
}

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

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

1 个答案:

答案 0 :(得分:4)

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