gpt4 book ai didi

c# - C# 中的多对多对象到对象关系

转载 作者:太空狗 更新时间:2023-10-29 20:02:21 24 4
gpt4 key购买 nike

我正在开展一个小型教育项目来锻炼 perst.net。

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

请告知如何在 C# 中做到最好,我应该使用“类似关系数据库”的技术类(class)吗?

最佳答案

如果您正在寻找面向对象(或领域驱动设计)的方法,那么使用第三个对象来处理“连接”是完全错误的方法。您可以使用 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# - C# 中的多对多对象到对象关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/776645/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com