Jus*_*ran 8 .net database ado.net
我有一个表示树结构的自引用角色表
ID [INT] AUTO INCREMENT
Name [VARCHAR]
ParentID [INT]
Run Code Online (Sandbox Code Playgroud)
我正在使用ADO.NET DataTable和DataAdapter来加载和保存此表的值.如果我只创建现有行的子项,则此方法有效.如果我创建子行,然后创建该子项的子项,然后更新,DataTable生成的临时ID值将进入ParentID列.我有以下数据关系集:
dataset.Relations.Add(New DataRelation("RoleToRole",RoleTable.Columns("ID"), RoleTable.Columns("ParentID")))
Run Code Online (Sandbox Code Playgroud)
当我在DataTable中创建新的子行时,我调用了SetParentRow方法
newRow.SetParentRow(parentRow)
Run Code Online (Sandbox Code Playgroud)
当我在DataAdapter上调用Update时,是否有一些特殊的东西可以使ID生成以递归方式传播?
我不太了解 ADO.net,但大多数 ORM 不会自动在关系中插入新记录的 ID。您必须采用两步流程:
这对于 ORM 来说很困难,因为您可能存在循环依赖关系,并且它不知道首先需要为哪个对象创建 ID。一些 ORM 足够聪明,可以找出不存在此类循环依赖关系的关系,但大多数则不然。