У меня есть следующие модели данных:
Диаграмма:
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; }
}
Я бы хотел, чтобы DiagramId
в DiagramServerEvent ссылался на корневую диаграмму. Похоже, это проблема, потому что некоторые события являются потомками DiagramSever
, который затем является потомком Diagram
. Есть ли способ вручную настроить это? Или это плохая модель?
Я также использую соединитель Pomelo для EF Core для поддержки MySQL.
Вот обзор записей DiagramServerEvent в базе данных . Первые три записи являются дочерними объектами объекта Diagram, остальные - дочерними объектами различных объектов DiagramServer. [ForeignKey("DiagramId")
ссылка из DiagramServerEvent, похоже, не работает, когда Diagram не является ближайшим родителем.