[英]Updating records in foreach loop in Entity Framework 6
我在foreach循环中更新记录时遇到问题。 我有一种从SQL Table导出文件并将其保存在网络共享中的方法:
public static void SyncOpportunity()
{
using (var ctx = new BPMOnline74Entities())
{
logger.Debug("Importing files from Opportunities.");
var oppFiles = from o in ctx.OpportunityFile
where SqlFunctions.DataLength(o.Data) > 0 && o.ServiceProcessed == false
select o;
foreach (OpportunityFile opp in oppFiles)
{
logger.Debug(string.Format("{0} is being imported.", opp.Name));
string fileName="";
if (opp.OpportunityId == null)
{
fileName = "E:\\BPM\\Opportunity\\";
logger.Error("File not bound to any DB object. Saved in E:\\BPM\\Opportunity.");
}
else
{
try
{
fileName = PathInfo.GetPath("Opportunity", (Guid)opp.OpportunityId);
}
catch (Exception ex)
{
logger.Error(ex.Message.ToString());
}
}
try
{
File.WriteAllBytes(fileName + opp.Name, opp.Data);
logger.Debug(string.Format("{0} was exported from SQL.", opp.Name));
opp.ServiceProcessed = true;
ctx.Entry(opp).State = System.Data.Entity.EntityState.Modified;
ctx.SaveChanges();
}
catch(Exception ex)
{
logger.Error(ex.Message.ToString());
}
}
logger.Debug(string.Format("Imported {0} files.", oppFiles.Count().ToString()));
}
logger.Debug("Disposing SyncOpportunity.");
}
从SQL成功导出文件后,我想将记录的“ ServiceProcessed”字段更新为true,以便在我的服务的下一次迭代中不会选择该文件。 问题是我的方法不会更新数据库,并且总是“捕获”我的所有记录。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.