我有一個帶有2個外鍵的表到同一個父表Edge.StartStationId和Edge.EndStationId。實體框架多對象關係
我想映射到實體框架obesets,但無法找到解決方法,似乎解決了這個問題。 我發現使用父(站)2個集合了一些解決方案,我不感興趣,
站(父)類:
public partial class Station
{
public Station()
{
this.Reservations = new List<Reservation>();
this.StationMaintenances = new List<StationMaintenance>();
}
public int ID { get; set; }
public int TypeId { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public decimal StationLat { get; set; }
public decimal StationLong { get; set; }
public bool IsOperational { get; set; }
public bool IsActive { get; set; }
public DateTime CreatedDate { get; set; }
public virtual BatteryStorage BatteryStorages { get; set; }
public virtual List<Reservation> Reservations { get; set; }
public virtual List<StationMaintenance> StationMaintenances { get; set; }
public virtual List<Edge> Edges { get; set; }
public virtual StationType StationType { get; set; }
}
邊緣(子)類:
public partial class Edge
{
public int ID { get; set; }
public int StartStationId { get; set; }
public virtual Station StartStation { get; set; }
public int EndStationId { get; set; }
public virtual Station EndStation { get; set; }
public decimal Distance { get; set; }
public decimal Time { get; set; }
public bool IsActive { get; set; }
}
在OnModelCreating中添加的邊緣貼圖類。
public EdgeMap()
{
// Primary Key
this.HasKey(t => t.ID);
// Properties
// Table & Column Mappings
this.ToTable("Edges");
this.Property(t => t.ID).HasColumnName("ID");
this.Property(t => t.StartStationId).HasColumnName("StartStationId");
this.Property(t => t.EndStationId).HasColumnName("EndStationId");
this.Property(t => t.Distance).HasColumnName("Distance");
this.Property(t => t.Time).HasColumnName("Time");
this.Property(t => t.IsActive).HasColumnName("IsActive");
// Relationships
//this.HasOptional(t => t.StartStation)
// .WithMany(t => t.Edges)
// .HasForeignKey(d => d.StarStationId);
//this.HasOptional(t => t.EndStation)
// .WithMany(t => t.Edges)
// .HasForeignKey(d => d.EndStationId);
}
例外:模型生成過程中檢測到
一個或多個驗證錯誤: System.Data.Entity.Edm.EdmAssociationType:與角色「Edge_EndStation_Target」在參考約束多重衝突關係'Edge_EndStation'。由於從屬角色中的所有屬性都是不可空的,所以主體角色的多重性必須爲'1'。
我認爲當持續更改Edges集合時EF可能會感到困惑,所以我不認爲EF會讓你這樣做。我認爲你最終可能會收到兩個邊緣集合或一個非虛擬邊緣集合,您可以手動加載電臺集合的邊緣。 – hazimdikenli