多対多の関係でいくつかの大きな問題があります。
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を作成せずにこれを乗り越える方法はありますか?