嗨,朋友,我是新的實體框架。 我正在使用實體框架代碼的第一種方法。 我創建了一個自連接表。如何防止在實體框架代碼中的這種衝突第一
public class A
{
[Key]
public int Id { get; set; }
[Required, MaxLength(20),Index(IsUnique = true)]
public string Name { get; set; }
public int? Parent { get; set; }
[ForeignKey("Parent")]
public virtual A FkA{ get; set; }
[ForeignKey("Parent")]
public virtual ICollection<A> FkAl{ get; set; }
}
現在它創建表沒有問題,我能夠插入數據。 但問題在於。
想我插入3行像
Name1 with NULL Parent
Name2 with Name1 Parent
Name3 with Name2 Parent
它讓我以這種方式插入,這就是精細
,但如果我這樣喜歡更新此。
Name1 with Name3 Parent
Name2 with Name1 Parent
Name3 with Name1 Parent
它給我沒有錯誤。但是你可以看到Name1和Name3都在彼此之內。
COS這是一個自聯接表什麼是檢查權層次的最佳途徑。
像高不能降低去
請幫我在這。
我嘗試了很多事情,並得到了與上ICollection的應用foreach循環,這讓我檢查這個,但我認爲它花了大量的時間去層次的瓢的方式。所以請爲我提供最好的方法來做到這一點。
感謝
你的更新意味着'Name3'是'Name1'的父親,'Name1'也是'Name3'的父親?奇怪的。 – Hopeless
@Hopeless是的,這不應該發生 –
以防止這種情況,有2種情況:首先當爲某個'A'設置父項時,確保它不是'A'的任何子項。第二,當爲某個「A」添加子項時,請確保它不是「A」的父項。你當然需要手動做到這一點。您還需要遞歸檢查,以及我可以想象它是多麼密集。 – Hopeless