Допустим, у меня есть два EntitySet, "Команды" и "Игроки".
Я добавляю новые команды в систему, ради аргумента, скажем, я добавляю тысячу команд из файла (который содержит дубликаты).
Система содержит 100 команд для запуска.И моя цель - избежать дубликатов, не вызывая SaveChanges () для каждой добавленной команды.
Процесс состоит в том, чтобы запросить, что новая команда еще не существует, затем добавить новую команду, если она не существует.
var team = (from t in context.Teams
where t.Name == newTeam.Name
select t).FirstOrDefault();
if (team==null)
--Add New Team
Если я добавлю с помощью context.Teams.AddObject(newTeam);
или context.AddObject("Teams",newTeam);
team.Count () останется равным 100, и если вы снова запустите запрос, var team будет нулевым.
Однако, если я вместо этого использую 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()
увеличится на единицу.
В первом примере context.Teams является ObjectSet<T>,
, тогда как в player.Teams.Add Teams это EntityCollection<T>
.Я бы подумал, что они будут вести себя одинаково, но это не так.
Есть ли способ заставить ObjectSet<T>
вести себя как EntityCollection<T>
?Я хочу вызывать SaveChanges один раз и только один раз после добавления всех команд из файла.
Или есть лучший способ, которого я не вижу?
Спасибо!