请教 vs自带的dbml 并发读取和更新的时候经常内存溢出问题。

boyyao 2016-12-29 09:12:55
多线程读取/更新表。用DBML文件做的模型

方法如下:

  public void UpdateLog(Log _log,int _id)
{
using (DBDataContext db = new DBDataContext())
{
var v = db.Log.SingleOrDefault(s => s.Uid == _id && s.date.Date == DateTime.Now.Date);
if (v == null)
{
_log.Uid = _id;
db.Log.InsertOnSubmit(_log);
}
else
{
//一些更新内容
}
UpdateSubmit(db);
}
}
public void UpdateSubmit(DBDataContext db)
{
try
{
db.SubmitChanges(ConflictMode.ContinueOnConflict);
}
catch
{
foreach (ObjectChangeConflict occ in db.ChangeConflicts)
{
//只更新实体对象中改变的字段的值,其他的保留不变
occ.Resolve(RefreshMode.KeepChanges);
}
//重新提交
db.SubmitChanges();
}
}



以上代码单独执行没什么问题。但是当多线程调用的时候(每个线程会new一个包含这个方法的类)。经常会出现OutOfMemoryException异常。。。请教。万分感谢。
...全文
825 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
boyyao 2016-12-29
  • 打赏
  • 举报
回复
忘记贴更新的方法了。
       public void UpdateSubmit(DBDataContext db)
        {
            try
            {
                db.SubmitChanges(ConflictMode.ContinueOnConflict);
            }
            catch
            {
                foreach (ObjectChangeConflict occ in db.ChangeConflicts)
                {
                    //只更新实体对象中改变的字段的值,其他的保留不变
                    occ.Resolve(RefreshMode.KeepChanges);
                }
                //重新提交
                db.SubmitChanges();
            }
        }

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧