MongoDB有自己的ObjectId类型,它用作默认主键。我正在尝试使用Onion Architecture设置一个使用MongoDB作为基础架构层中的持久性引擎的应用程序。如果我的POCO类在我的域层中定义但是使用MongoDB的ObjectID类型作为主键,那么是否会强制我将MongoDB作为依赖项添加到我的域层?
答案 0 :(得分:1)
除最外层之外,您不应该在任何地方引用MongoDB。在洋葱架构中,数据持久性被视为基础架构。我希望MongoDB成为实现域模型中定义的存储库接口的存储库实现的一部分。
MongoDB文档具有唯一标识它的_id
字段。 See here:
_id
值可以是除数组之外的任何类型,只要它是唯一的。如果您的文档具有不可变的自然主键,我们建议您在_id
中使用该键而不是自动生成的ID。
不要让你的持久性机制推动你!