【问题标题】:MongoDB: using onion architecture, does my domain/core layer need to reference the MongoDB dlls?MongoDB:使用洋葱架构,我的域/核心层是否需要引用 MongoDB dll?
【发布时间】:2012-09-24 13:52:21
【问题描述】:

MongoDB 有自己的 ObjectId 类型,它用作默认主键。我正在尝试设置一个使用 Onion Architecture 设计的应用程序,并将 MongoDB 作为基础设施层中的持久性引擎。如果我的 POCO 类是在我的域层中定义的,但使用 MongoDB 的 ObjectID 类型作为主键,这会迫使我将 MongoDB 添加为对我的域层的依赖吗?

【问题讨论】:

    标签: mongodb onion-architecture


    【解决方案1】:

    除了最外层之外,您不应该在任何地方都需要对 MongoDB 的引用。在洋葱架构中,数据持久性被认为是基础设施。我希望 MongoDB 成为实现域模型中定义的存储库接口的存储库实现的一部分。

    MongoDB 文档有一个 _id 字段来唯一标识它。 See here:

    _id 值可以是数组以外的任何类型,只要它是唯一的。如果您的文档具有不可变的自然主键,我们建议您在 _id 中使用该主键,而不是自动生成的 id。

    不要让你的持久性机制左右你!

    【讨论】:

    • 感谢您的帮助!事实证明,C# 驱动程序的文档解决了这个问题(link)。在标题为 RepresentationSerializationOptions 的部分(几乎在页面的一半处)下,它提到了一种使用string 作为 POCO 中的数据类型同时将值存储在 mongodb 中作为ObjectId 的方法。这个 SO 问题也有帮助:link
    猜你喜欢
    • 1970-01-01
    • 2022-09-24
    • 2015-03-17
    • 2015-11-06
    • 2014-12-22
    • 2020-08-13
    • 2011-10-09
    • 1970-01-01
    • 2013-06-30
    相关资源
    最近更新 更多