SubmitChanges调用不更新数据

时间:2015-01-06 19:10:14

标签: c# linq linq-to-sql submitchanges

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

我能够正常检索数据,但是当我调用SubmitChanges方法时,调用正在执行5分钟以上,然后其执行没有任何错误,但是当我&#39 ; m检查数据库,没有任何更新。

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

这是我使用的代码:

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

1 个答案:

答案 0 :(得分:0)

您应该对数据库进行概要分析,以查看SQL中发生了什么。

你确定它是submitchanges吗?由于SubmitChanges()内有foreach,因此一次只能更新一条记录。这不应该是一个性能问题,除非你有一个非常大的表/批量索引等。你可能想要移动到foreach之外。但是,每个记录仍会进行一次更新,因此速度不会太快。

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

,就会在数据库中执行select
foreach (var record in records)

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

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