如何仅使用完整对象的 SiteId 实例存储ChatRoom? 感谢
public class ChatRoom
{
public ObjectId Id { get; set; }
public DateTime StartDate { get; set; }
public **Site** **Site** { get; set; }
}
答案 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
之类的表达式。这有缺点,因为你实际上根本无法实现域模型,但它也有优势,因为目前还不清楚货运列车何时会与数据库通信。
然而,这些“货运列车”通常很危险,因为不清楚从数据库加载各个元素的时间。