두 개의 EntitySets, "Teams"및 "Players"가 있다고 가정 해 보겠습니다.ObjectSet <T> .AddObject() vs. EntityCollection .Add()
나는 새로운 팀을 시스템에 추가하고 있는데, 논의를 위해서 파일 (중복 된 내용 포함)에서 천명의 팀을 추가한다고 가정 해 봅시다.
시스템에는 100 개의 팀이 있습니다. 내 목표는 추가 된 모든 팀에 대해 SaveChanges()를 호출하지 않고 중복을 피하는 것입니다.
프로세스는 newteam이 아직 존재하지 않는다고 쿼리하고, 존재하지 않으면 새로운 팀을 추가합니다.
var team = (from t in context.Teams
where t.Name == newTeam.Name
select t).FirstOrDefault();
if (team==null)
--Add New Team
내가 100을 유지하고 당신이 쿼리를 다시 실행 한 경우, VAR 팀은 null이 될 것이다)
context.Teams.AddObject(newTeam);
또는 context.AddObject("Teams",newTeam);
를 사용하는 team.Count (추가하는 경우.
그러나 팀을 추가하는 대신 player.Teams.Add(newTeam);
을 사용하면 NewTeam을 추가 할 플레이어가 있어야하며 해당 플레이어가 모든 새 팀의 구성원이된다는 것을 제외하고는 모든 것이 완벽하게 작동합니다.
전화 후 player.Teams.Add(newTeam);
쿼리가 새 팀을 반환합니다.
var team = (from t in player.teams
where t.Name = newTeam.Name
select t).FirstOrDefault();
player.Teams.Count()
이 1 씩 증가합니다.
첫 번째 예에서는 context.Teams는 ObjectSet<T>,
이고 player.Teams.Add Teams는 EntityCollection<T>
입니다. 나는 이것들이 똑같이 행동 할 것이라고 생각 하겠지만, 그들은 그렇게 행동하지 않을 것이다.
ObjectSet<T>
은 EntityCollection<T>
처럼 동작합니까? 모든 팀이 파일에서 추가 된 후에 한 번만 SaveChanges를 호출하려고합니다.
아니면 내가 볼 수없는 더 좋은 방법이 있습니까?
감사합니다.
: 널 체크 – Jowen