問題

我有一個表示樹結構的自引用角色表

 ID [INT] AUTO INCREMENT
Name [VARCHAR]
ParentID [INT]
 

我正在使用ADO.NET DataTable和DataAdapter來載入和儲存此表的值.如果我只建立現有行的子行,這可以工作.如果我建立一個子行,然後建立該子行的子行,然後更新,DataTable生成的臨時ID值將進入ParentID列.我有以下資料關係集:

 dataset.Relations.Add(New DataRelation("RoleToRole",RoleTable.Columns("ID"), RoleTable.Columns("ParentID")))
 

當我在DataTable中建立新的子行時,我呼叫SetParentRow方法

 newRow.SetParentRow(parentRow)
 

當我在DataAdapter上呼叫Update時,我是否需要做一些特殊的事情來讓ID生成遞迴傳播?

  最佳答案

我特別不知道ADO.net,但大多數ORM不會自動在關係中插入新記錄的ID.你必須訴諸2步程序:

  1. 構建和儲存父
  2. javascript – 構建和儲存與父關係的子項

ORM很難做到這一點的原因是因為您可能有迴圈依賴關係,並且它不知道它首先需要建立ID的物件.一些ORM足夠聰明,可以弄清楚那些沒有迴圈依賴關係的關係,但大多數不是.

  相同標籤的其他問題

.netdatabaseado.net