我知道我可以使用外键而不是将整个对象放在内存中。只是为了好奇,我想知道哪种方法更好:在这个1对多关系场景中使用Attach或Single()?哪一个在性能方面更好?
使用Attach();
Player myPlayer = new Player();
myPlayer.FullName = txt_Name.Text;
Team myTeam = new Team { TeamId = Convert.ToInt32(drp_Teams.SelectedValue) };
db.Teams.Attach(myTeam);
myPlayer.CurrentTeam = myTeam;
db.Players.Add(myPlayer);
db.SaveChanges();
使用Single():
Player myPlayer = new Player();
myPlayer.FullName = txt_Name.Text;
int teamId = Convert.ToInt32(drp_Teams.SelectedValue);
myPlayer.CurrentTeam = db.Teams.Single(t => t.TeamId == teamId);
db.Players.Add(myPlayer);
db.SaveChanges();
答案 0 :(得分:1)
Single
始终从数据库中获取数据,无论此数据是否已加载到上下文中。第一种方法不会查询Team实体的数据库 - 因此在您的方案中它会更好。