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

发布于 2025-01-01 07:37:51 字数 733 浏览 1 评论 0原文

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

如果没有,我正在使用包含 id 的 id 类(例如 TodoListId)(在 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 时,我通常将所有设置器设置为受保护,以确保正确使用域模型。 RavenDb 客户端也可以这样做吗?或者序列化不起作用吗?

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

I'm thinking of using my domain models (DDD) as documents in RavenDb. Is that a bad idea?

If not, I'm using id classes (like TodoListId) which contains the id (in ravens case todolists/3 etc). How can I tell Raven/JSON.NET to use them as the 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;}
}

Also, when I'm using nhibernate I usually set all setters to protected to make sure that the domain models are used properly. Is that possible with the RavenDb client too? Or wont serialization work then?

todoList.Id.ToString() would return todolists/1.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

撑一把青伞 2025-01-08 07:37:51

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

Regarding the protected setters, yes, that will work.
Regarding the TodoListId, you need to provide an ITypeConverter implementation and register that with the DocumentStore.Conventions.IdentityTypeConvertors to make RavenDB understand how to translate between your Id type and the id string.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文