0

Извините за плохое название, я попробую и объясню здесь лучше. Для простоты скажем, что у меня есть две сущности в моей первой миграции кода. Один игрок с идентификатором и именем и один матч с идентификатором, победитель и проигравший. Победитель и проигравший игрок (не тот же игрок). Я хочу, чтобы в одном матче мог быть один победитель и один неудачник. У меня есть следующий 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!

+0

Извините за то, что вы заняли какое-то время, я пропустил «виртуальное» ключевое слово befor свойств Looser и Winner в классе Match ... Теперь отлично работает. Длинный день... – erikduvet

ответ

0

Если у кого-то еще есть длинный день и он сталкивается с подобной проблемой, добавьте «виртуальный» к свойствам, которые вам нужны для случая. В моем случае Winner и Looser в классе Match.

Смежные вопросы