4

多対多の関係でいくつかの大きな問題があります。

public class Team
{
    public Team()
    {
        Users = new HashSet<User>();
    }

    public int Id { get; set; }
    public string Name { get; set; }

    public ICollection<User> Users { get; set; }
}

public class User
{
    public User()
    {
        Teams = new HashSet<Team>();
    }

    public int Id { get; set; }
    public string Username { get; set; }
    public string Name { get; set; }
    public string Email { get; set; }
    public string Phone { get; set; }
    public string Cell { get; set; }

    public ICollection<Team> Teams { get; set; }
}

このように新しく追加されたチームを返した後

var currentUser = _ctx.Users.Where(u => u.Username ==    HttpContext.Current.User.Identity.Name).SingleOrDefault();

        teamToAdd.Users.Add(currentUser);
        var teamAdded = _ctx.Teams.Add(teamToAdd);
        Save();

        return teamAdded;  

応答の内部例外で次のエラーが発生します。

"Self referencing loop detected with type 'MatchMaker.Data.Team'. Path 'Users[0].Teams'."

明らかに循環参照が行われていますが、チームが多くのユーザーを持つことができ、ユーザーが多くのチームを持つことができるようにしたいと考えています。DTOを作成せずにこれを乗り越える方法はありますか?

4

0 に答える 0