如何首先关闭实体框架代码中的乐观并发?

时间:2017-12-05 21:59:06

标签: c# entity-framework

我正在使用Actian Pervasive(v12)数据库和Entity Framework 6并尝试插入新记录。当我这样做时,我收到 OptimisticConcurrencyException 错误。当我使用MS SQL Server数据库时,即使这些表构造相同并且都具有数据库生成的标识字段,也不会发生此行为。

为了解决这个问题,我尝试将Key字段上的 [DatabaseGenerated] 属性更改为所有不同的可用值,以查看它是否表现更好并且不返回Exception(异常)无效 - 我是唯一的用户,我正在进行单个插入操作)。这没有用。

因此,我想在实体框架中关闭乐观并发(即我想做任何更新,以覆盖数据库中当前的任何内容)。我不希望Entity Framework引发此 OptimisticConcurrencyException 。问题是,我不知道该怎么做。我的类定义目前没有 TimeStamp 字段或具有 [ConcurrencyCheck] 属性的任何字段,但在执行简单插入时它仍会引发此异常。

注意:我的应用程序是使用DevExpress XAF开发的,它是ASP.NET和Entity Framework之上的框架,因此自动生成检索数据的调用,并且要覆盖这些调用来捕获和处理这些调用并不容易异常,所以我试图找到一种方法来阻止Entity Framework甚至引发这种异常。

如何在实体框架中关闭乐观并发检查(对于我的应用程序是全局的)?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。

我在问题的初始描述中没有提到的是我在已映射插入过程的类上遇到此错误。

EF(OptimisticConcurrency)引发的异常有点误导,因为问题实际上是存储过程没有返回项目的新ID(Ivan的评论让我想到了sproc的返回值)

要解决此问题,我必须从存储过程中返回新ID,如下所示:

/Users/matteomattiussi/package.json