2つのEntitySets、 "Teams"と "Players"があるとします。ObjectSet <T> .AddObject()と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
私はcontext.Teams.AddObject(newTeam);
またはcontext.AddObject("Teams",newTeam);
team.Countを(使用して追加した場合)は100のままになり、再びクエリを実行した場合、VARチームはnullになります。
しかし、代わりに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チームではEntityCollection<T>
です。私はこれらが同じように振舞うと思うだろうが、そうではない。
ObjectSet<T>
はEntityCollection<T>
のように動作する方法がありますか?すべてのチームがファイルから追加された後、SaveChangesを1回だけ呼び出す必要があります。
また、私が見ていないより良い方法がありますか?
ありがとうございます!
offtopic:ヌルチェック – Jowen