1

在过去的几个小时里,我试图找出为什么我无法使用该SubmitChanges方法更新数据库中的数据。

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

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

这是我正在使用的代码:

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();
}
4

1 回答 1

0

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

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

您的问题可能在提交之前。默认情况下,Linq-2-sql 是延迟执行的。这意味着您的选择只会在您执行您的操作时在数据库中执行

foreach (var record in records)

所以我的想法是这是你的性能问题,而不是提交更改。

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

于 2015-01-06T19:47:19.977 回答