【问题标题】:Ignore Inherited Property EF6忽略继承的属性 EF6
【发布时间】:2018-02-26 08:34:55
【问题描述】:

TB_R_LEAVE_Configuration

public class TB_R_LEAVE_REQ_ID_Configuration : DataUseLogConfiguration<Entities.TB_R_LEAVE_REQ_ID>
{
    public TB_R_LEAVE_REQ_ID_Configuration()
    {
        ToTable("TB_R_LEAVE_REQ_ID");

        HasKey(e => e.LEAVE_REQ_ID);
        HasRequired<TB_R_LEAVE_REQ>(e => e.TB_R_LEAVE_REQ);            

        Property(e => e.LEAVE_REQ_ID).HasColumnName("LEAVE_REQ_ID").HasMaxLength(10);
        Property(e => e.LEAVE_ID).HasColumnName("LEAVE_ID").HasMaxLength(5);
    }
}

DataUseLogConfiguration(抽象基类)

public abstract class DataUseLogConfiguration<T> : EntityTypeConfiguration<T> where T : DataUseLog
{
    public DataUseLogConfiguration()
    {
        Property(e => e.CREATED_BY).HasColumnName("CREATED_BY").HasMaxLength(5).IsRequired();
        Property(e => e.CREATED_DT).HasColumnName("CREATED_DT").IsRequired();
        Property(e => e.UPDATED_BY).HasColumnName("UPDATED_BY").HasMaxLength(5).IsOptional();
        Property(e => e.UPDATED_DT).HasColumnName("UPDATED_DT").IsOptional();
    }
}

我想忽略所有 DataUseLogConfiguration 属性

  1. 我尝试在 TB_R_LEAVE_Configuration 上使用忽略:

    Ignore(e =&gt; e.UPDATED_BY);

这会发生:

“属性 'UPDATED_BY' 不是类型上的声明属性 'TB_R_LEAVE_REQ_ID'。验证该属性是否未明确 使用忽略方法从模型中排除或 NotMappedAttribute 数据注释。确保它是有效的 原始属性。”

  1. 不要忽略这种情况:

"ORA-00904:\"Extent2\".\"UPDATED_BY\": 无效标识符"

数据模型也使用继承的基类

public class TB_R_LEAVE_REQ_ID : DataUseLog
{
    public string LEAVE_REQ_ID { get; set; }
    public string LEAVE_ID { get; set; }

    public virtual TB_M_LEAVE TB_M_LEAVE { get; set; }
    public virtual TB_R_LEAVE_REQ TB_R_LEAVE_REQ { get; set; }
}

我如何仅在 TB_R_LEAVE_Configuration 上使用流利的 API 来正确忽略基类上的属性(我尽量避免更改数据模型)

【问题讨论】:

  • 我认为,如果您将属性映射到列,然后您说要忽略该属性,则某些内容将无法正常工作,这是有道理的..

标签: c# asp.net-mvc oracle entity-framework


【解决方案1】:

感谢所有试图帮助我的人,顺便说一句,这就是我通过编辑 TB_R_LEAVE_REQ_ID_Configuration 来解决它的方法

public class TB_R_LEAVE_REQ_ID_Configuration : EntityTypeConfiguration<Entities.TB_R_LEAVE_REQ_ID>
{
    public TB_R_LEAVE_REQ_ID_Configuration()
    {
        ToTable("TB_R_LEAVE_REQ_ID");

        HasKey(e => e.LEAVE_REQ_ID);
        HasRequired<TB_R_LEAVE_REQ>(e => e.TB_R_LEAVE_REQ);

        Ignore(e => e.UPDATED_BY);
        Ignore(e => e.UPDATED_DT);
        Ignore(e => e.CREATED_BY);
        Ignore(e => e.CREATED_DT);

        Property(e => e.LEAVE_REQ_ID).HasColumnName("LEAVE_REQ_ID").HasMaxLength(10);
        Property(e => e.LEAVE_ID).HasColumnName("LEAVE_ID").HasMaxLength(5);
    }
}

请注意,我将继承更改为 EntityTypeConfiguration,然后像往常一样添加忽略

希望对大家有所帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-29
    • 2021-07-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多