Извините за плохое название, я попробую и объясню здесь лучше. Для простоты скажем, что у меня есть две сущности в моей первой миграции кода. Один игрок с идентификатором и именем и один матч с идентификатором, победитель и проигравший. Победитель и проигравший игрок (не тот же игрок). Я хочу, чтобы в одном матче мог быть один победитель и один неудачник. У меня есть следующий DbContext:Добавить «тот же» объект в несколько объектов приводит к нулю
public IDbSet<Player> Players { get; set; }
public IDbSet<Match> PlayerMatches { get; set; }
Мой класс игрока выглядит следующим образом:
public int PlayerId { get; set; }
public string Name { get; set; }
public virtual ICollection<Match> Matches { get; set; }
Мой класс Match:
public int MatchId { get; set; }
public Player Winner { get; set; }
public Player Looser { get; set; }
Если у меня есть следующий код в моем разборе, (синтаксический разбор «правильные» правильные данные помещаются в Db):
Player player1 = db.Players.Where(....); //Here I just select which is the correct player (OK)
Player player2 = db.Players.Where(....);
Match m = new Match();
m.Winner = player1;
m.Looser = player2;
player1.Matches.Add(m);
player2.Matches.Add(m);
db.SaveChanges();
Если я проверяю Матч прежде, чем он добавится к двум игрокам, все будет в порядке, и оно добавится без ошибок. Проблема возникает, когда я проверяю Db или пытается найти совпадение. В зависимости от игрока я «использую», я получаю null для победителя/проигравшего в зависимости от того, выиграл ли/проиграл «мой игрок». Если этот игрок выиграл проигравший, это будет null наоборот ... Я считаю, что мне не хватает som mapping или так, но я не могу понять, что, я очень новичок в Code First, и это первая проблема с db, с которой я столкнулся в моем заявление.
Любые идеи?
Ciao!
Извините за то, что вы заняли какое-то время, я пропустил «виртуальное» ключевое слово befor свойств Looser и Winner в классе Match ... Теперь отлично работает. Длинный день... – erikduvet