E1
とE2
の2つのエンティティが同じCode
の値を共有しているとします。私が最初に削除し、次を挿入するとします。エンティティフレームワークでのエンティティの削除と挿入
public void Delete(Entity E)
{
var existingEntity = _context.EntityTable.SingleOrDefault(s => s.Code == E.Code);
_context.EntityTable.Remove(existingEntity);
}
public void Insert(Entity E)
{
var existingEntity = _context.EntityTable.FirstOrDefault(s => s.Code == E.Code);
if (existingEntity != null){
throw new ArgumentException("Item alread exists.")
}
var newEntity = CreateDbEntity(E); // Create Db Entity just convert the type. Nothing much here.
_context.EntityTable.Add(newEntity);
}
public void Save()
{
_context.SaveChanges();
}
問題は、私はすぐにまで反映されません_context
でEntityTable
からE1
を削除するとことである
Item.Delete(E1);
Item.Insert(E2);
Item.Save();
私は、保存します。したがって、E2
の挿入はE1がまだ存在するので成功しないため、操作は失敗します。 EntityTable
には変更が反映されていますか?
SQLにユニークな状態を残し、チェックインしないのはなぜですか? –
あなたのクエリと、SaveChanges()への呼び出しとの間に、別のプロセスまたはスレッドによって挿入することもできます。コードでこれをしないでください。 – CodeCaster
delete> save> insert> save .. lol – niksofteng