最近、Linq を使用して C# アプリケーションを開発しました。処理する必要があるプロファイルのリストを外部データベースから取得しています。一部は新規で、一部は既にデータベースにあり、更新する必要があります。私が今日行っていることは、プロファイル リストを調べて、各プロファイルが存在するかどうかを確認し、そうでない場合は挿入することです。このソリューションは正常に機能しています。
UPDATE ON DUPLICATE のような一括挿入/更新を使用する方法があると確信しています。取得するファイルが巨大で、一括挿入/更新の方がパフォーマンスが優れていることが知られているため、この方法で時間を節約できます。現在使用している反復を避けたいと思います。
insertall は既に保存されている行では機能しません。更新と挿入の両方を組み合わせる必要があります
これが私のコードです。あなたの助けに感謝します。
foreach (Profile tmpProfile in profiles)
{
try
{
var matchedProfile = (from c in db.ProfileEntities
where c.ProfileId == tmpProfile.Id
select c).SingleOrDefault();
if (matchedProfile == null)
{
//Insert
db.ProfileEntities.InsertOnSubmit(EntityMapper.ToEntity(tmpProfile));
}
else
{
//Update
EntityMapper.ToEntity(ref matchedProfile, tmpProfile);
}
}
catch (System.Data.SqlServerCe.SqlCeException sqlExec)
{
}
catch (Exception e)
{
}
}
db.SubmitChanges();