我有 2 个表之间的多对多关系。
其中一项功能包括删除导航表中的所有记录,然后重新填充它。
我使用实体框架,首先删除相关记录,然后通过以下方式重新填充集合:
foreach (var funcionario in listFuncionario)
{
int fun_id = 0;
if (!int.TryParse(funcionario.Trim(), out fun_id))
continue;
var fun = db.Funcionario.Find(fun_id);
fun.Servicio.ToList().ForEach(s => db.Servicio.Remove(s));
fun.Servicio.Clear();
foreach (var servicio in listServicio)
fun.Servicio.Add(db.Servicio.Find(servicio));
}
db.SaveChanges();
这些循环非常慢(特别是删除),但是,当我使用ExecuteSqlCommand
直接发出DELETE
和INSERT
语句时,循环很快。
我不喜欢直接发出 SQL 命令,因为失去了实体框架和面向对象编程的本质。您是否知道使用实体框架以更有效的方式做到这一点?
问候,詹姆