EF Core-使用ForeignKey引用父级父级

时间:2019-04-08 06:09:29

标签: c# mysql entity-framework-core

我有以下数据模型:

图:

public class Diagram
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public long Id { get; set; }
        [ForeignKey("QuizId")]
        public Quiz Quiz { get; set; }
        public long QuizId { get; set; }
        public string Question { get; set; }
        public List<DiagramServer> Servers { get; set; }
        public List<DiagramServerEvent> AvaliableEvents { get; set; }
    }

DiagramServer :(图表的子项)

public class DiagramServer
{
    public long Id { get; set; }
    [ForeignKey("DiagramId")]
    public Diagram Diagram { get; set; }
    public long DiagramId { get; set; }
    public string Name { get; set; }
    public List<DiagramServerEvent> Events { get; set; }
}

DiagramServerEvent:(DiagramServer和DiagramServer的子级)

public class DiagramServerEvent
{
    public long Id { get; set; }
    public string Payload { get; set; }
    public float XCoordinate { get; set; } 
    public long EventId { get; set; }
    [ForeignKey("DiagramId")]
    public Diagram Diagram { get; set; }
    public long? DiagramId { get; set; }
    [ForeignKey("DiagramServerId")]
    public DiagramServer Server { get; set; }
    public long? DiagramServerId { get; set; }
}

我希望DiagramServerEvent中的DiagramId引用根图。这似乎是一个问题,因为某些事件是DiagramSever的子级,然后又是Diagram的子级。有没有办法手动配置它?还是这首先是一个不好的模型?

我还将EF Core的Pomelo连接器用于支持MySQL。

这里是DiagramServerEvent entries in the database的概述。前三个条目是Diagram对象的子项,其余条目是各个DiagramServer对象的子项。当Diagram不是最接近的父级时,来自DiagramServerEvent的[ForeignKey("DiagramId")引用似乎不起作用。

0 个答案:

没有答案