首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle - code-first上的实体框架外键问题

Oracle - code-first上的实体框架外键问题
EN

Stack Overflow用户
提问于 2013-08-08 03:04:36
回答 2查看 2.6K关注 0票数 0

我有以下使用code-first的映射:

代码语言:javascript
复制
{
    /// <summary>
    /// Entity Framework Dc.Dc database table object representation
    /// </summary>
    [Table("DCDC", Schema = "MZMESDB")]
    public class EfDcDc
    {
        /// <summary>
        /// Element ID
        /// </summary>
        [Column("ID")]
        public int Id { get; set; }

        /// <summary>
        /// Name of DC
        /// </summary>
        [Column("NAME")]
        public string Name { get; set; }

        /// <summary>
        /// DC Description
        /// </summary>
        [Column("DESCRIPTION")]
        public string Description { get; set; }

        /// <summary>
        /// Foreign Key
        /// </summary>
        public virtual EfSystemDataModule Module { get; set; }

        /// <summary>
        /// Name of module
        /// </summary>
        [Column("ENABLED")]
        public string Enabled { get; set; }
    }
}

代码语言:javascript
复制
{
    /// <summary>
    /// Entity Framework SystemData.Module database table object representation
    /// </summary>
    [Table("SYSTEMDATAMODULE", Schema = "MZMESDB")]
    public class EfSystemDataModule
    {
        /// <summary>
        /// Element ID
        /// </summary>
        [Column("ID")]
        public int Id { get; set; }

        /// <summary>
        /// Name of module
        /// </summary>
        [Column("NAME")]
        public string Name { get; set; }

        /// <summary>
        /// If the module is installed. Char because Oracle does not support boolean
        /// </summary>
        [Column("INSTALLED")]
        public char Installed { get; set; }

        /// <summary>
        /// If the module is enabled. Char because Oracle does not support boolean
        /// </summary>
        [Column("ENABLED")]
        public char Enabled { get; set; }

    }
}

Oracle表有一个外键:

代码语言:javascript
复制
CREATE TABLE "MZMESDB"."DCDC" ( 
                                "ID" INTEGER NOT NULL , 
                            "NAME" VARCHAR2(64) NOT NULL , 
                            "DESCRIPTION" VARCHAR(256),
                            "MODULE_ID" INTEGER NOT NULL,
                            "MODULE_NAME" VARCHAR(64) NOT NULL,
                            "ENABLED" CHAR NOT NULL, 
                            PRIMARY KEY ("ID") VALIDATE,
                            FOREIGN KEY (MODULE_ID, MODULE_NAME) REFERENCES SYSTEMDATAMODULE(ID, NAME)

在编译时没有问题,但在rutime时我发出:

代码语言:javascript
复制
MzDbContext dbContext = new MzDbContext();
            EfDcDc configuredDC = new EfDcDc();

            try
            {
                configuredDC = dbContext.efDcDc.FirstOrDefault(item => item.Name == "COMMON_NAME");
            }
            catch (Exception e)
            {
                Debug.WriteLine("Error reading from database. Message: " + e.Message.ToString());
                return false;
            }

我从Oracle EF驱动程序中得到以下错误:

代码语言:javascript
复制
ORA-00904: \"Extent1\"."\"Module_Id\":Invalid identifier.

我只想检查数据库中是否存在DcDc元素,以便稍后获取其数据进行处理。我做错了什么?

Rds

EN

回答 2

Stack Overflow用户

发布于 2013-08-08 03:47:42

这通常来自无效的列名。在Oracle中,列名都是大写的。混合案例Module_Id从何而来?我只看到您的代码中使用的ID。

票数 1
EN

Stack Overflow用户

发布于 2013-08-08 04:12:32

这个问题与EF内部机制有关,它没有大写一些内部名称...

所以,Module_Id在Oracle中是不存在的,因为表字段是MODEL_ID。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18111701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档