using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace RobotNet10.MapManager.Data; /// /// Edge entity - Paths between nodes /// Maps to VDMA LIF: layouts[].edges[] /// [Table("Edges")] public class Edge { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public Guid Id { get; set; } /// /// Parent level reference /// [Required] public Guid LevelId { get; set; } /// /// Edge identifier (VDMA LIF: edgeId) - Required /// Unique within level /// [Required] [StringLength(128)] public string EdgeId { get; set; } = string.Empty; /// /// Start node reference (VDMA LIF: startNodeId) - Required /// [Required] public Guid StartNodeId { get; set; } /// /// End node reference (VDMA LIF: endNodeId) - Required /// [Required] public Guid EndNodeId { get; set; } /// /// Edge name - Extension field (NOT in VDMA LIF) /// For UI/display purposes only /// [StringLength(256)] public string? EdgeName { get; set; } /// /// Edge description - Extension field (NOT in VDMA LIF) /// For UI/display purposes only /// public string? EdgeDescription { get; set; } // Navigation properties [ForeignKey(nameof(LevelId))] public virtual LayoutLevel Level { get; set; } = null!; [ForeignKey(nameof(StartNodeId))] public virtual Node StartNode { get; set; } = null!; [ForeignKey(nameof(EndNodeId))] public virtual Node EndNode { get; set; } = null!; public virtual ICollection VehicleProperties { get; set; } = new List(); }