使用 MongoDB C# 映射私有支持字段

问题描述 投票:0回答:2

我正在尝试在 MongoDB 中映射一个私有支持字段。
我的模型看起来像:

public class Competitor
{
    private IList<CompetitorBest> _competitorBests;

    public virtual int CompetitorId { get; set; }

    public virtual string Name
    {
        get
        {
            if (Type == "Team")
                return TeamName;

            return FirstName + " " + LastName;
        }
    }

    public virtual IEnumerable<CompetitorBest> CompetitorBests
    {
        get { return _competitorBests.ToArray(); }
    }
}

我基本上是在尝试将 _competitorBests 映射为 CompetitorBests(存在于我的 mongo 文档中)

注意: 此模型由 NHibernate 共享(因此是

virtual

我在文档中看不到任何明显的内容。

我该怎么做?

c# mongodb mongodb-.net-driver
2个回答
15
投票

这成功了:

BsonClassMap.RegisterClassMap<Competitor>(cm =>
{
    cm.AutoMap();
    cm.MapField("_competitorBests").SetElementName("CompetitorBests");
});

0
投票

上面的答案有效,但正如 @jeremy 提到的,如果您尝试将它与 LINQ 一起使用,它就会爆炸。 添加私有 setter 对我有用,我什至不必在 RegisterClassMap 中添加自定义映射。

public class Competitor
{
    private IList<CompetitorBest> _competitorBests;

    public virtual IEnumerable<CompetitorBest> CompetitorBests
    {
        get => _competitorBests.ToArray();
        private set => _competitorBests = value.ToList();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.