我有以下数据模型:
图:
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")
引用似乎不起作用。