我们目前正在从 Fluent NHibernate 迁移到 MongoDB。我很好奇对我的对象进行建模的最佳方法可能是什么。在大多数情况下,我想让他们一个人呆着,但这可能是不可能的。例如我有这两个类:
public class Config
{
public int Id { get; set; }
public virtual string Name { get; set; }
public Filter Filter { get; set; }
}
public class Filter
{
public int Id { get; set; }
public virtual string Name { get; set; }
}
现在我明白了,当涉及到 MongoDB 时,我必须使用 Guid/string 作为 Id。那没问题。当我迁移数据时,我有 AutoMapper 为我改变了它。我关心的是数据模型。显然,当我将 Config 作为文档存储在 MongoDB 中时,我不想将完整的 Filter 对象与它一起存储,因为那里存在一对多的关系。与它一起存储该过滤器将存储冗余数据。有没有办法通过 MongoDB 映射说只存储过滤器 ID 而不是整个对象?使用 Fluent NHibernate,我可以使用上面的那些对象正确映射它。我希望我只是错过了一些东西。
编辑:我应该提到一个明显的解决方案是调整 Config 类,如:
public class Config : Entity
{
private string _filterId;
public int Id { get; set; }
public virtual string Name { get; set; }
public string FilterId
{
get
{
if (Filter == null)
return null;
_filterId = Filter.Id;
return _filterId;
}
set { _filterId = value; }
}
public Filter Filter
{
get
{
// return code to grab Filter by _filterId from mongo
}
}
}
然而,这对我来说感觉肮脏和不雅。有更好的吗?