为什么 devart DefaultValue 属性在版本 9.7 上不起作用

why is devart DefaultValue attribute not working on version 9.7

我们使用 Devart dotConnect for oracle 和 Entitiy Framework。

我们一直在使用 here 描述的解决方案来生成带有序列的 ID,并且一切正常,直到我们升级到 devart 9.7

似乎默认值被忽略了。 例如,如果我查看 DBMonitor,我会看到没有 seq_name.nextval.

的插入命令

奇怪的是,当我 运行 在控制台应用程序中使用相同的代码时它可以工作,但在 IIS 上却不行(即使在同一台机器上)

编辑: 示例:

oracle 数据库中有一个 table MY_TABLE 和一个序列 MY_SEQUENCE。

我使用 Devart Entity Developer 生成了一个包含一个实体的 edml 模型 table,它被称为 TABLE。

在 XML 编辑器中,我添加了 DefaultValue 和 StoreGeneratedPattern 属性。它看起来像这样:

<EntityType Name="MY_TABLE">
      <Key>
        <PropertyRef Name="ID" />
      </Key>
      <Property Name="ID" Type="decimal" Nullable="false"                     
                devart:DefaultValue="MY_SEQUENCE.nextval"
                StoreGeneratedPattern="Identity" />
      <Property Name="COL1" Type="VARCHAR2" MaxLength="200" />
      <Property Name="COL2" Type="decimal" Nullable="false" />
    </EntityType>

在我的 C# 代码中,它看起来像这样:

ctx.TABLEs.AddObject(new TABLE(){COL1 = "a", COL2 = 3});
ctx.SaveChanges();

当我在控制台应用程序中执行代码时,生成的命令是:

DECLARE
  updatedRowid ROWID;
BEGIN
INSERT INTO MY_TABLE(ID, COL1, COL2)
VALUES (MY_SEQUENCES.nextval, :p0, :p1)
RETURNING ROWID INTO updatedRowid;
OPEN :outParameter FOR SELECT ID FROM MY_TABLE WHERE ROWID = updatedRowid;
END;

但是,IIS 上的相同代码(在同一台机器上)会生成此命令:

DECLARE
  updatedRowid ROWID;
BEGIN
INSERT INTO MY_TABLE(COL1, COL2)
VALUES (:p0, :p1)
RETURNING ROWID INTO updatedRowid;
OPEN :outParameter FOR SELECT ID FROM MY_TABLE WHERE ROWID = updatedRowid;
END;

在旧的 Devart 版本(9.7 之前)中它运行良好。

可能是什么原因?

移动到 Entity Framework 版本 5 并将 dll - Devart.Data.Oracle.Entity.EF4 替换为 Devart.Data.Oracle.Entity.EF5 后,它又开始工作了。