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... 并测试您是否真的到达那里。
最近几个小时,我试图找出为什么我无法使用 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... 并测试您是否真的到达那里。