过去几个小时我试图找出为什么我无法使用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();
}
答案 0 :(得分:0)
您应该对数据库进行概要分析,以查看SQL中发生了什么。
你确定它是submitchanges
吗?由于SubmitChanges()
内有foreach
,因此一次只能更新一条记录。这不应该是一个性能问题,除非你有一个非常大的表/批量索引等。你可能想要移动到foreach之外。但是,每个记录仍会进行一次更新,因此速度不会太快。
您的问题可能是之前提交更改。默认情况下,Linq-2-sql是延迟执行的。这意味着只要您执行
,就会在数据库中执行selectforeach (var record in records)
所以我的想法是,这是你的性能问题,而不是提交更改。
您希望在调试器中看到这一点,在foreach record.data中的第一行放置一个断点...并测试您是否实际到达那里。