我每天都有XML Feed,其中包含每天的所有记录。这些需要被处理并加载到数据库中,即那些未包含在第2天的feed中的那些应该被删除,并且任何差异都应该导致数据库的更新。我目前的方法是使用处理日期更新每个包含的记录,然后删除当天未处理的所有记录。
然而,这需要每天更新每条记录,我想知道是否有更好的方法?
我目前正在加载XML文件,并在我的dbcontext中找到xml中每条记录当前存在的每条记录,如下所示:
return (from venue in db.Venues
where venue.id = xmlVenueId
select venue).FirstOrDefault();
如果存在,那么我用当前的xml文件信息更新所有字段,如果不存在,我创建一个新字段。如果所有字段都相同,则不更新数据库。
当我处理完所有记录后,我需要删除任何未受影响的记录。
我应该如何形成所有找到的场地的列表(我应该提取主键然后添加到列表还是整个场地)以及linq2Sql查询看起来如何查找不在此列表中的所有记录?
答案 0 :(得分:0)
不确定这是最好的方式,但似乎有效:
我创建了一个List<int> venuePrimaryKeys
,然后执行以下查询:
from venue in db.Venues
where ! venuePrimaryKeys.Contains(venue.id)
select venue
然后,我可以在结果列表中遍历每个场地的结果IQueryable
和DeleteOnSubmit
。