我正在使用 LINQ 访问数据库,并对记录进行更改。我像这样检索记录:
using(var db = new DatabaseDataContext(connectionString))
{
var query =
from item in db.table
where item.senddate == null
select item;
results = query.ToList();
}
获得项目后,我会处理每个项目,这需要与 Web 服务进行通信,并且每条记录可能需要一分钟以上的时间。记录更新后,我需要提交更改,但我不知道如何继续。目前,我执行以下操作:
List<table> toProcess = QueryDb(); // Calls the previously displayed method
foreach (table item in toProcess)
{
item.result = QueryDb(item.xmlrequest);
PostToDb(item);
}
...
private bool PostToDb(table submit)
{
submit.senddate = DateTime.Now;
using (var db = new DatabaseDbDataContext(connectionString))
{
db.SubmitChanges();
}
return result;
}
db.SubmitChanges()
不提交任何更改,但我还没有真正设置对象“提交”包含更改。在一次处理一个文件时,如何在不保持 Db 连接打开几分钟的情况下提交对条目所做的更改?
提前感谢您的任何帮助。
部分解决
我不认为这是最好的解决方案,但我能够让它与我的代码的以下更改一起工作:
private bool PostToDb(table submit)
{
using (var db = new DatabaseDataContext(connectionString))
{
var query =
from item in db.table
where item.iprimaryid.Equals(submit.iprimaryid)
select item;
// There can only be one result, but this was the only
// way I could think to access it
foreach (var item in query)
{
item.senddate = DateTime.Now;
item.result = submit.result;
}
db.SubmitChanges();
}
return result;
}