次のコードブロックは、基本的にDB内のエンティティの存在をチェックし、更新のためにコンテキストにロードするか、存在しない場合は新しいエンティティを追加します。EF6でUPSERTを実行するより効率的な方法
using (var db = new Entities.DB.DConn())
{
//...
foreach (Account account in accounts)
{
bool isNewRecord = false;
Entities.DB.Account dlAccount = new Entities.DB.Account();
Entities.DB.Account exisitngAcct = db.Accounts.Where(x => x.GId == dlG.Id).FirstOrDefault(); //x.GId is NOT ad primary key
if (exisitngAcct != null)
{
dlAccount = exisitngAcct;
isNewRecord = true;
}
dlAccount.GId = dlG.Id;
dlAccount.AccountName = account.NameAtFI;
dlAccount.AccountNumber = account.AcctNumber;
dlAccount.AcctType = account.AcctType;
dlAccount.AsOfDate = account.DateCreated;
dlAccount.IsDeleted = false;
dlAccount.DateModified = DateTime.UtcNow.ToUniversalTime();
if (isNewRecord)
{
dldb.Accounts.Add(dlAccount);
}
db.SaveChanges();
}
}
私は、コンテキストにエンティティを取り付け、EntityStateを使用しての研究の負荷をやっている、しかし、私はちょうどそのコードは、私の例で書かれたことだろうか届きません。
上記と同じ操作をより効率的に実行できる方法を教えてもらえますか?私はEFにとってかなり新しく、私が正しくそれを使って作業していることを確認したい。
ご協力いただきありがとうございます。
-であるとして、あなたのコードについて "非効率的" とは何ですか? – Amy
おそらく何もありません。私は私が知らないものを知らない。 – Nugs