加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#中的多对多对象关系

发布时间:2020-12-15 06:33:18 所属栏目:百科 来源:网络整理
导读:我正在开展一个小型教育项目来锻炼perst.net. 我们有一个很小的设计问题,那就是如何最好地解决两类对象之间的关系,即参与者和冠军.这是一个多对多的关系,因为参与者可以参加许多锦标赛,而锦标赛可以有多个参与者. 请告知如何在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()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读