2

我们目前正在从 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
        }
    }
}

然而,这对我来说感觉肮脏和不雅。有更好的吗?

4

0 回答 0