當沒有循環引用時,是否有更好的設計?這是一個問題嗎? 的職業:帶有類/數據庫的循環引用(C#,Enitity Framework Code First)
public class Stat
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public List<Quantity> Quantities { get; set; }
public List<Hit> Hits { get; set; }
}
public class Hit
{
public int Id { get; set; }
public DateTime Date { get; set; }
public string Comment { get; set; }
public virtual Stat Stat { get; set; }
public List<HitComponent> HitComponents { get; set; }
}
public class HitComponent
{
public int Id { get; set; }
public float Amount { get; set; }
public virtual Hit Hit { get; set; }
public virtual Quantity Quantity { get; set; }
}
public class Quantity
{
public int Id { get; set; }
public string Name { get; set; }
public virtual Stat Stat { get; set; }
public virtual Unit Unit { get; set; }
public List<HitComponent> HitComponents { get; set; }
}
public class Unit
{
public int Id { get; set; }
public string Name { get; set; }
public string Abbreviation { get; set; }
public List<Quantity> Quantities { get; set; }
}
一個統計是對某事物的統計數據,例如訓練運動如舉重。數量可以是可以用數字來衡量的東西,例如所用槓鈴的重量(以千克爲單位 - 單位存儲在單位類別中)或重複次數。在這種情況下,Stat(舉重)有兩個數量(重量,代表)。命中是Stat的一個事件(一次完成舉重訓練)。 HitComponent屬於一個Hit,它包含一個Quantity的數量。每個命中必須包含儘可能多的HitComponent,儘可能多的Hit數據。 (例如每個「舉重」Stat的Hit必須包含兩個HitComponents,一個用於「重量」數量,一個用於「代表」數量。我懷疑,也許這個前提可能會導致一些問題......)
我使用上面顯示的設計,並且沒有太多問題 - 只要我想將某些類序列化爲Json字符串,因爲它導致了循環引用異常,所以對於循環引用只是有點尷尬。
我的第一個問題是這個設計有什麼問題嗎?我搜索了很多,並沒有找到明確和明確的答案這種循環參考(有人說這不是一個真正的循環參考,因爲方向不是「循環」,有人說這個解決方案是非常有問題的) ? 另一個問題是有人可以提出更好的設計?
良好的解決方案,爲我工作。不過,我對循環引用(或依賴關係 - 有什麼不同?)有點困惑。在我的情況下,有一個先決條件,如果Stat有3個數量,那麼當一個HitComponent被插入一個數量時,其他2個數量_must_也必須有1-1個HitComponents。這個先決條件出現在類/數據庫表的設計中是否是一種好的做法?或者在程序邏輯中處理這個規則更好,並且有一個沒有循環引用的更清潔的設計 - 例如去掉Stats和Hits之間的引用? – Csati