最近Linqを使用してC#アプリケーションを開発しました。 私は処理する必要のあるプロファイルのリストを外部データベースから取得しています。新しいものと、データベースに既に存在し、更新が必要なものがあります。 私が今日していることは、プロファイルリストを調べて、各プロファイルが存在すればそれをチェックします。それ以外の場合は更新します。このソリューションはうまくいきます。Visual Studio C#Linqバルク挿入/更新
私は、取得したファイルが巨大で一括挿入/更新がより良いパフォーマンスを持つことが知られているので、この方法で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();
をLINQ to SQLでの機能を挿入しないでくださいそれはより良いと思いますか? – user149318
こんにちはありがとうございます データベースで大きなヒットを行い、それを繰り返すことによるパフォーマンスの低下は、データベースへの多数の小さな呼び出しよりも少なくなります。 ネットオプティマイゼーションが必要です。 – Joon
このような最適化を行うにはどうすればよいですか?私はバルクが望ましいという事実を認識していますが、LINQを使ってそれを行う方法がありますか?バルク操作での挿入と更新の両方で – user149318