首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何忽略继承中的鉴别列

如何忽略继承中的鉴别列
EN

Stack Overflow用户
提问于 2020-06-04 04:43:56
回答 1查看 50关注 0票数 0

我的系统有一个定制,它们使用相同的数据库,但定制有一些主系统不知道的自己的表。

我的主系统中有这个实体:

代码语言:javascript
复制
[Table("WORKFLOW_ITEM")]
public class WORKFLOW_ITEM
{
    public WORKFLOW_ITEM()
    {
        PROJECT = new HashSet<PROJECT>();
        WORKFLOW_HISTORY = new HashSet<WORKFLOW_HISTORY>();
    }

    [Key]
    public long ID_WORKFLOW_ITEM { get; set; }

    public long ID_WORKFLOW { get; set; }

    public virtual WORKFLOW WORKFLOW { get; set; }

    public virtual ICollection<WORKFLOW_HISTORY> WORKFLOW_HISTORY { get; set; }
    public virtual ICollection<PROJECT> PROJECT { get; set; }
}

在我的自定义系统中,我需要扩展以实现这个新的集合

代码语言:javascript
复制
[Table("WORKFLOW_ITEM")]
public class WORKFLOW_ITEMCUSTOM : WORKFLOW_ITEM
{
    public WORKFLOW_ITEMCUSTOM() 
    {
        ENGINEERING_REQUEST = new HashSet<ENGINEERING_REQUEST>();
    }

    public virtual ICollection<ENGINEERING_REQUEST> ENGINEERING_REQUEST { get; set; }
}

代码语言:javascript
复制
public class ENGINEERING_REQUEST
{
    [Key]
    public long ID_ENGINEERING_REQUEST { get; set; }

    public long? ID_WORKFLOW_ITEM { get; set; }
    public virtual WORKFLOW_ITEMCUSTOM WORKFLOW_ITEM { get; set; }
}

我的上下文

代码语言:javascript
复制
public class ContextCUSTOM: MyContext
{
    public ContextCUSTOM(string p_ConnectionString) :
        base(p_ConnectionString) { }

    public virtual DbSet<ENGINEERING_REQUEST> ENGINEERING_REQUEST { get; set; }
    public virtual DbSet<WORKFLOW_ITEMCUSTOM> WORKFLOW_ITEMCUSTOM{ get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        modelBuilder.Entity<ENGINEERING_REQUEST>()
            .HasOne(ct => ct.WORKFLOW_ITEM)
            .WithMany(ct => ct.ENGINEERING_REQUEST)
            .HasForeignKey(ct => ct.ID_WORKFLOW_ITEM)
            .OnDelete(DeleteBehavior.Restrict);
    }
}

当我试图在这个上下文中运行一个查询时,我收到了一个关于判别器列的运行时错误,但是我不想使用like层次结构,只使用组合来添加更多的虚拟对象。有什么解决方案吗?

EN

回答 1

Stack Overflow用户

发布于 2020-06-04 05:04:27

如果可能,您可以尝试为WORKFLOW_ITEMWORKFLOW_ITEMCUSTOM引入基类

代码语言:javascript
复制
public abstract class WORKFLOW_ITEM_BASE
{
    public WORKFLOW_ITEM_BASE()
    {
        PROJECT = new HashSet<PROJECT>();
        WORKFLOW_HISTORY = new HashSet<WORKFLOW_HISTORY>();
    }

    [Key]
    public long ID_WORKFLOW_ITEM { get; set; }

    public long ID_WORKFLOW { get; set; }

    public virtual WORKFLOW WORKFLOW { get; set; }

    public virtual ICollection<WORKFLOW_HISTORY> WORKFLOW_HISTORY { get; set; }
    public virtual ICollection<PROJECT> PROJECT { get; set; }
}

[Table("WORKFLOW_ITEM")]
public class WORKFLOW_ITEM: WORKFLOW_ITEM_BASE {}

[Table("WORKFLOW_ITEM")]
public class WORKFLOW_ITEMCUSTOM : WORKFLOW_ITEM_BASE
{
    public WORKFLOW_ITEMCUSTOM() 
    {
        ENGINEERING_REQUEST = new HashSet<ENGINEERING_REQUEST>();
    }

    public virtual ICollection<ENGINEERING_REQUEST> ENGINEERING_REQUEST { get; set; }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62182415

复制
相关文章

相似问题

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