【问题标题】:"Column not allowed here" in EF6 with TPH and Devart Oracle带有 TPH 和 Devart Oracle 的 EF6 中的“此处不允许列”
【发布时间】:2014-08-17 04:21:34
【问题描述】:

在使用 EF 创建我的数据库架构时,Devart dotConnect 为我的 TPH 类生成以下 SQL:

CREATE TABLE "Types" ( 
  ID NUMBER(10) NOT NULL,
  "Name" NVARCHAR2(50) NULL,
  "Discriminator" NVARCHAR2(128) DEFAULT (Undefined) NULL,
  CONSTRAINT "PK_Types" PRIMARY KEY (ID)
)

我总是收到“ORA-00984:此处不允许列”错误。似乎很明显,它与鉴别器列声明中的“未定义”有关。这是 dotConnect 中的错误还是我对映射做错了什么?看起来很简单的案例。大约有十几个类扩展了 AbstractType,但没有一个添加新列。

我的 POCO 课:

public abstract partial class AbstractType
{
    public int Id { get; set; }

    public string Name { get; set; }
}

映射:

public class AbstractTypeMap : EntityTypeConfiguration<AbstractType>
{
    public AbstractTypeMap()
    {
        HasKey(t => t.Id);

        ToTable("Types");
        this.Property(t => t.Name).HasMaxLength(50);

        this.Property(t => t.Id).HasColumnName("ID");
        this.Property(t => t.Name).HasColumnName("Name");
    }
}

我在本地 11g 快速安装上使用 EF 6.1.1、dotConnect Oracle 8.4.171。

【问题讨论】:

  • 我的问题不在于鉴别器列本身,我知道它在 TPH 中的用途,并且我没有反对它的存在。当粘贴到 SqlDeveloper 中时,我在第 4 行(鉴别器声明)中收到错误,而在删除“(未定义)”时一切正常。所以我很确定问题出在dotConnect生成的sql上。我只是不知道它为什么会生成这段代码。
  • default (Undefined) 在 Oracle 中肯定是错误的

标签: c# oracle entity-framework-6 devart dotconnect


【解决方案1】:

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多