问题

我有一个表示树结构的自引用角色表

 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