我可以通过检查Ids是否已存在来向数据库添加缺失列表:
var newIDs = ObjsList.Select(a => a.Id).ToList();
var existingDBObjs = db.Objs.Where(r => newIDs.Contains(r.ObjsId)).ToList();
var missingOrNewObjs = newsList.Where(r => !existingDBObjs.Select(c => c.ObjsId).Equals(r.ObjsId)).ToList();
db.Objs.AddRange(missingOrNewObjs);
但是如何通过检查(不是Id)而不是其他多个'来将不存在的项目添加到数据库?属性(使用最小数据库调用)?
e.g。仅当关系表中不存在子ID和父ID时才将关系行添加到db
答案 0 :(得分:1)
您可以使用匿名类型。我还建议使用Join
:
var missingOrNewObjs = from newobj in ObjsList
join existing in db.Objs
on new { newobj.Name, newobj.Number, newobj.Address }
equals new { existing.Name, existing.Number, existing.Address } into grpJoin
from outerjoin in grpJoin.DefaultIfEmpty()
where outerjoin == null
select newobj;
db.Objs.AddRange(missingOrNewObjs);