C#中的多对多对象关系

前端之家收集整理的这篇文章主要介绍了C#中的多对多对象关系前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在开展一个小型教育项目来锻炼perst.net.

我们有一个很小的设计问题,那就是如何最好地解决两类对象之间的关系,即参与者和冠军.这是一个多对多的关系,因为参与者可以参加许多锦标赛,而锦标赛可以有多个参与者.

请告知如何在C#中做到最好,我应该使用’关系数据库’技术类吗?

解决方法

如果您正在寻找面向对象(或域驱动设计)方法,那么处理“连接”的第三个对象完全是错误方法.您可以使用ILists / Enumerables和Add …方法来处理此问题,如下所示:
public class Participant
{
    private readonly IList<Championship> _championships = new List<Championship>();

    public IEnumerable<Championship> Championships
    {
        get { return _championships; }
    }

    internal void AddChampionship(Championship championship)
    {
        if (!_championships.Contains(championship))
            _championships.Add(championship);
    }
}

public class Championship
{
    private readonly IList<Participant> _participants = new List<Participant>();

    public IEnumerable<Participant> Participants
    {
        get { return _participants; }
    }

    public void AddParticipant(Participant participant)
    {
        if (_participants.Contains(participant)) return;
        _participants.Add(participant);
        participant.AddChampionship(this);
    }
}

这里的关键是确保你只从一方管理关系 – 例如在这种情况下,将通过调用championship.AddParticipant()

猜你在找的C#相关文章