我正在考虑将我的域模型(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
。
答案 0 :(得分:4)
关于受保护的制定者,是的,这将起作用。
关于TodoListId,您需要提供ITypeConverter
实现并使用DocumentStore.Conventions.IdentityTypeConvertors
进行注册,以使RavenDB了解如何在您的Id类型和id字符串之间进行转换。