繁体   English   中英

实体框架与Oracle DB的约束

[英]Entity Framework Constraints with Oracle DB

对此我不遗余力...我有一个针对Oracle的代码优先实体模型,而在解决此外键问题时遇到了问题:

“不能将属性'aidYearCode'配置为导航属性。该属性必须是有效的实体类型,并且该属性应具有非抽象的getter和setter。对于集合属性,该类型必须实现ICollection,其中T是有效的实体类型”。

以下是相关的代码段:

1)在“ OnModelCreating(DbModelBuilder modelBuilder)”中:

    modelBuilder.Entity<INSTITUTIONAL>()
            .HasMany(e => e.applicantBudgetComponents)
            .WithRequired(e => e.institutional) // so this exists in APPLICANT_BUDGET_COMPONENTS: public virtual INSTITUTIONAL institutional { get; set; }
            .HasForeignKey(e => e.aidYrCode)
            .WillCascadeOnDelete(false);

2)具有外键的表APPLICANT_BUDGET_COMPONENTS具有:

        [Key]
        [Column(Order = 0)]
        [StringLength(4)]
        public string aidYrCode { get; set; } 

3)最后,INSTITUTIONAL表具有主键:

    [Key]
    [StringLength(4)]
    public string aidYearCode { get; set; }

这都是由VS2015中的Code-First向导生成的,这是我尝试过的:

  • 放置注释

    [ForeignKey(“ aidYrCode”)] in 2)

  • 将来自Oracle模式的注释放入2)

    [ForeignKey(“ FK1_RBRACMP_INV_ROBINST_CODE”)]

  • 在外键名称中添加“ Id”,以便遵循EF6约定。

应当注意,APPLICANT_BUDGET_COMPONENTS具有复合主键。

事实证明,错误消息是虚假的。 “ aidYearcode”的配置是正确的,但是,在更深入地研究后,我发现其他表中缺少一些模型配置(与这里提到的那些间接相关),并为这些属性插入了适当的流畅命令和属性后,“错误”得以解决。 。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM