0

在我的 Mongo 数据库中,我有两个集合,分别是 A 和 B。类型 A 的实体有,例如,类型 B 的实体的 id 列表。这个列表只是一个字符串列表,其中每个字符串都是一个字符串B 的 ID 的表示。

我想在我的域类(以及同时的数据类)中更清楚地反映这些引用关系,以便我在 A 中有一个 B 列表,并且能够通过 LINQ 使用可能的过滤或排序来查询这个列表.

目前这是通过以下方式实现的:我有一个带有名为“MongoReferenceLoadRequested”的静态事件的 MongoReference 类。此事件的事件参数包含一种类型的引用项及其 id,它还具有 Object 类型的读写属性,实际加载的对象应该被写入其中。每当有人想要访问 A 的实例的 B 列表时,就会触发该事件。

在我的 Global.asax.cs 中,我订阅了此事件,并在处理程序中加载所需的实体并将其分配给事件 args 的属性。这样做是为了将存储 MongoDb 连接字符串的应用程序配置与没有(也不应该)访问连接字符串的 POCO 实体类解耦。

您如何看待,这是实现我的目标的正确方法吗?

4

1 回答 1

0

考虑重新访问 MongoDB 中的文档模型。听起来像是让 A 在 MongoDB 中有一个 B 数组的好候选。

// Document A:
{
  _id: ... ,
  values: [B1,B2,B3 ..]
}

这种阻抗不匹配是 RDBMS 的遗留问题,是由于隐含的关系和表行类型的建模和思考。

有关某些常见场景中适当数据建模的示例和讨论,请参见此处

于 2013-03-18T20:22:52.883 回答