存储ObjectId而不是完整对象

时间:2015-04-10 08:24:01

标签: c# mongodb

如何仅使用完整对象的 SiteId 实例存储ChatRoom? 感谢

  public class ChatRoom
 {
    public ObjectId Id { get; set; }
    public DateTime StartDate { get; set; }
    public **Site** **Site** { get; set; }
}

1 个答案:

答案 0 :(得分:1)

如果您愿意更改模型,这非常简单:

public class ChatRoom
{
    public ObjectId Id { get; set; }
    public DateTime StartDate { get; set; }
    public ObjectId SiteId { get; set; }
}

但是,这意味着您需要确保自己的参照完整性。例如,如果尚未存储您要引用的Site,则首先必须将Site存储在数据库中,然后将ChatRoom与{SiteId一起存储1}}设置为引用的Id的{​​{1}} - 否则,没有Site可以引用。

更重要的是,这意味着您不再使用对象图或代码中的domain model。这会对整个代码体系结构产生影响。

例如,您无法构建Id之类的表达式。这有缺点,因为你实际上根本无法实现域模型,但它也有优势,因为目前还不清楚货运列车何时会与数据库通信。

然而,这些“货运列车”通常很危险,因为不清楚从数据库加载各个元素的时间。