SubmitChanges 调用不更新数据

SubmitChanges call not updating data

最近几个小时,我试图找出为什么我无法使用 SubmitChanges 方法更新数据库中的数据。

我能够正常检索数据,但是当我调用 SubmitChanges 方法时,调用执行了 5 分钟以上,然后它继续进行而没有任何错误,但是当我检查db,没有任何更新。

我之前研究了一下,其他一些帖子说检查是否已声明主键,但实际上已经声明了。

这是我正在使用的代码:

SitesDB sitesDB = new SitesDB(SqlConnection);
Site site = sitesDB.GetSite(ProgramArgs.SiteID);

var records = DB.records
    .Join(DB.Locations.Where(l => l.SiteID == ProgramArgs.SiteID),
       s => Convert.ToInt32(s.store_id),
       l => l.LocationID,
       (s, l) => s)
    .OrderBy(s => s.survey_date_utc);


foreach (var record in records)
{
    record.date_local = ConvertTimeFromUTC(date_utc, site.TimeZoneID);

    DB.SubmitChanges();
}

您应该分析数据库以查看 SQL 中发生了什么。

你确定是submitchanges吗?由于您的 foreach 中有 SubmitChanges(),因此它一次只会更新一条记录。除非您有非常大的 table / 大量索引等,否则这不应该是一个太大的性能问题。您可能希望将其移到 foreach 之外。但是,这仍然会对每条记录进行一次更新,因此速度不会那么快。

您的问题可能是提交之前。默认情况下,Linq-2-sql 是延迟执行。这意味着您的 select 只会在您执行

时在数据库中执行
foreach (var record in records)

所以我的想法是这是你的性能问题,而不是 submitchanges。

您可能希望在调试器中看到这一点,在 foreach 内的第一行放置一个断点 record.data... 并测试您是否真的到达那里。