在Telerik OpenAccess ORM中提交异常

时间:2012-07-31 16:53:23

标签: c# .net orm telerik telerik-open-access

我之前有一个与此类似的问题,但是关于实体框架。从那时起,我尝试使用Telerik OpenAccess。这是我的模特:

enter image description here

当每10秒运行一次以下函数时,它的行为与预期的一样,并且不会通过异常。但是,如果我在短时间内连续调用此函数,则会收到此错误。

InvalidOperationException - Not allowed because Commit / Rollback is in progress

这是功能。 SaveChanges()

会抛出异常
private void NewTaskTaskCompleted(object sender, TaskCompletedEvent e)
{
    TASK scheduledTask = entities.TASKs.First(x => x.TASK_NAME == e.ClassName);
    scheduledTask.NEXT_RUN = e.NextRun;
    //entities.SaveChanges();

    TASK_LOG logMsg = new TASK_LOG()
    {
        TASK = scheduledTask,
        MESSAGE = e.TaskResult.Message,
        STATUS = e.TaskResult.Status ? "Successful" : "Failure",
        TIMESTAMP = e.CompletedTime
    };

    scheduledTask.TASK_LOGs.Add(logMsg);
    //entities.Add(logMsg);
    entities.SaveChanges();
}

SaveChanges调用是否阻止函数退出,阻止发生下一个函数调用?

1 个答案:

答案 0 :(得分:0)

Telerik标准的乐观并发行为。含义:假设没有并发发生,如果发生,它将崩溃。以前没有检查,所以要么使用自己的机制(如锁)。

另见http://www.telerik.com/help/openaccess-orm/concurrency-control-pessimistic.html