- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
抛出异常的代码非常简单 - 这是非常常规的插入然后提交更改语句,如下所示:
context.tb_dayErrorLog.InsertOnSubmit(data);
context.SubmitChanges();
所以真的没什么特别的。这条语句一天执行大约5万次没有任何问题,但是:每天大约 6 - 10 次,它以以下方式结束:
在调用 SubmitChanges 期间无法执行该操作。
StackTrace: at System.Data.Linq.DataContext.CheckNotInSubmitChanges()
at System.Data.Linq.Table`1.InsertOnSubmit(TEntity entity)
我试图找出那可能是什么但找不到线索这种行为非常不确定,礼貌地说 - 它如何正确完成 50k 次而很少几次没有?
DataContext
首先被初始化为一个静态的,然后被所有的调用重复使用,所以我在想也许这就是问题所在。然后我将其更改为在每次调用时都进行初始化,但结果非常相似。每天仍然很少有异常(exception)。
有什么想法吗?
一些补充:函数看起来像:
public override bool Log(ErrorLogData logData)
{
try
{
logData.ProcessID = _processID;
//Create new log dataset
var data = new DataRecord
{
application = logData.Application,
date = DateTime.Now,
Other = logData.Other,
process = logData.ProcessName,
processid = logData.ProcessID,
severity = logData.Severity,
username = logData.UserName,
Type = (short)logData.ErrorType
};
var context = new DataContext(ConnectionString);
context.tb_dayErrorLog.InsertOnSubmit(data);
context.SubmitChanges();
}
catch (Exception ex)
{
//log log in eventviewer
LogEvent(logData.ToString(), ex);
return false;
}
return true;
}
就这么简单记录初始化然后插入。
正如我在评论中所写,虽然通过 Ado.Net 和 SqlCommand 做同样的事情,但这个问题没有发生......
所以我的好奇心让我思考为什么?
最佳答案
这听起来像是一个线程问题,您在一个线程上调用 Log 并因此调用 SubmitChanges,而另一个线程正处于 SubmitChanges 的中间。
我怀疑你的 DataContext 仍然是一个全局静态变量。
尝试将您的 Log 方法更改为
using (var context = new DataContext(ConnectionString))
{
context.tb_dayErrorLog.InsertOnSubmit(data);
context.SubmitChanges();
}
关于c# - LinQ DataContext - 在调用 SubmitChanges 期间无法执行该操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8502909/
我正在开发一个使用 Linq2SQL 进行数据访问的 WP7 芒果应用程序。我有一个 Note 实体,它有一个自动生成的 int 类型的键。 我第一次向数据库添加新注释时,操作正常,注释保存,然后如果
我正在尝试创建一个数据库。我做了一个表格,我想从中获取数据。一切似乎都很好,但我的数据库没有得到更新,也没有改变。我正在使用本地数据库。我尝试更改“复制到输出目录”但没有任何反应......Submi
我有一个向数据库添加记录的表单。主键是自动递增的。我想让网页重定向到显示刚刚输入的信息的页面。 例如,它会重定向到 http://localhost/details.aspx?softwareID=1
我不知道这段代码有什么问题,这段代码可以成功编译,但是不会更新数据库。我想念一些东西吗? DataClassesDataContext db = new DataClassesDataContext(
我知道之前有人问过这个问题,但我遇到了这个非常奇怪的初学者问题: 我想通过他们播放的电影的 id 更新 Actor 列表(只有一部电影) DataClasses1DataContext
有什么理由这样的事情行不通吗? 这是我用 LINQ 更新表中记录时多次使用的逻辑: DataClasses1DataContext db = new DataClasses1DataContext(
我正在尝试使用数据库上下文更新数据库中的 2 个字段 [HttpPost] [ValidateAntiForgeryToken] public ActionResult Change
我正在使用自定义存储过程从我的数据库中检索数据: tbTextBox.Text = db.getSettingValue("PropertyName").First().Value; (db是一个全局
在这里听起来不像是破记录(有一些帖子看起来像这个),但它们似乎都没有解决我的问题。好像要更新的时候 private bool resetPassword(string password) {
我想为我的模型覆盖 SubmitChanges() 方法。 当我尝试覆盖时出现编译错误: cannot override inherited member 'System.Data.Linq.Data
我有以下代码- public bool InsertUser(params) { User objUser = new User(params); objDataContext.Use
我在尝试调试 LINQ to SQL 和提交更改时遇到了很大的困难。 我一直在使用http://weblogs.asp.net/scottgu/archive/2007/07/31/linq-to-s
正在编辑其他人的代码,想知道在使用 for 循环和 InsertOnSubmit 时,submitchanges 调用是在循环内还是在循环外。 即: foreach (string t in newT
我在这里无能为力。问题是我试图在 LINQ to SQL 中使用数据库生成的标识属性在数据库中创建一个新实体,然后创建与第一个关联的另一个实体。我猜问题是 LINQ to SQL 不能在没有第一个实体
调用 {DataContext}.SubmitChanges() 时出现 stackoverflow 异常...我希望我知道要发布哪些代码行以帮助澄清情况,但是抛出异常时不会提供任何信息: An un
我在数据库中有一个表,主键是 emp_pk。现在使用 LINQ 我正在尝试对其执行一些操作。当我更改一些属性并调用时, context.SubmitChanges(); 理想情况下,where 子句应
谁能告诉我是否/如何在 Linq2Sql 调用 SubmitChanges() 之前验证数据上下文中的更改。我遇到的情况是,我创建了一个上下文,执行多个操作并在其他处理任务中添加了许多插入,然后在提交
我正在开发一个应用程序,其中一次将大量数据插入到 SQL 数据库中。我使用 LINQ to SQL,并有这样的东西作为我的插入操作: foreach(对象中的var obj) { context.In
在我的第二个 ASP.NET MVC 项目中,我面临一个非常奇怪的问题:当我调用 DataContext 类的 SubmitChanges 方法时,数据库中没有任何更新。这很奇怪,因为我的第一个项目一
我收到了 InvalidOperationException尝试使用 LinqToSql 添加行时。我们无法在内部复制它,并且只有我们的一个客户发生了大约 0.06%,总是对数据库进行相对简单的更改。
我是一名优秀的程序员,十分优秀!