C# 是否将域模型用作RavenDb中的文档?

C# 是否将域模型用作RavenDb中的文档?,c#,nosql,domain-driven-design,ravendb,C#,Nosql,Domain Driven Design,Ravendb,我正在考虑使用我的域模型(DDD)作为RavenDb中的文档。这是个坏主意吗 如果没有,我将使用id类(如TodoListId),其中包含id(在ravens案例中为todolists/3等)。如何告诉Raven/JSON.NET使用它们作为id public class TodoListId { public class TodoListId(string id) { //validate the id and set internal var }

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

如果没有,我将使用id类(如
TodoListId
),其中包含id(在ravens案例中为
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()
将返回
todoList/1
关于受保护的设置程序,是的,这将起作用。
关于TodoListId,您需要提供一个
ITypeConverter
实现,并将其注册到
DocumentStore.Conventions.IdentityTypeConvertors
,以使RavenDB了解如何在Id类型和Id字符串之间进行转换。

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

oracle已经说过了。应该是的。瑞文还能生成id吗?jgauffin,是的,它应该能,是的。神谕已经说过了。应该是的。Raven还能生成id吗?jgauffin,是的,它应该能做到,是的。为什么不把id属性权放在类中呢?或者让您的域实体从EntityBase派生,并将Id放在那里?为什么不将Id属性权放在类中?或者让您的域实体从EntityBase派生,并将Id放在那里?