我有一个新的 ASP.NET MVC 4 应用程序,我开始使用它。我过去使用过 Entity-Framework,但这是我第一次使用 Code First。我遇到的麻烦是,当PLAYER
添加一个新记录时,POSITIONS
也会添加一条新记录,即使该表中已经有一条匹配的记录。
控制器
Player player = new Player();
player.PlayerName = "Bob";
PositionRepository posRepo = new PositionRepository();
player.PlayerPosition = posRepo.Get(1);
PlayerRepository playerRepo = new PlayerRepository();
playerRepo.Add(player);
播放器回购
public Player Add(Player player)
{
_db.Players.Add(player);
_db.SaveChanges();
return player;
}
仓位回购
public Position Get(int id)
{
return _db.Positions.SingleOrDefault(r => r.Id == id);
}
如果有帮助,我也可以包含 Player 和 Position 类的代码。
总而言之:当我添加新PLAYER
记录时,我希望它引用现有POSITION
记录。在上面的例子中,我只是抓取了第一POSITION
条记录。相反,POSITION
会为玩家创建一条新记录。
有趣的是,如果我在一个循环中构建多个玩家,只会POSITION
创建一个新记录。这仍然是一个问题,因为我不想POSITION
创建任何新记录,而是使用数据库中已经存在的记录。