我正在重构一个旧的国家/地区/位置数据库结构,以创建一个分层表。我打算使用新表的主键和自引用的ParentID列(在主键上)作为层次结构ID列的基础。
因此,我的表看起来像这样:
PK Name ParentID HierarchyID
1 World NULL /
2 UK 1 /1/
3 Wigan 2 /1/2
我的问题是:其他人在创建记录或更改记录的父项时如何保持层次结构ID列的最新状态?
注意:我正在使用LINQtoSQL(我使用计算的hierarchyid.ToString()列在代码中公开血统,以及存储过程为我提供hierarchyid查询的性能优势)。
对于插入/更新管理:
我考虑重写LINQtoSQL中新表的插入/更新过程。
我考虑使用存储过程来管理更新/插入新记录。
我考虑在插入/更新后使用递归触发器来执行基于ParentID的更新。
然而,我还没有决定采取哪种方式!
有人使用过这些方法来管理层次结构ID吗?是否有更好的方法我没有考虑到,或者我漏掉了什么非常明显的东西!!?
因此,我的表看起来像这样:
PK Name ParentID HierarchyID
1 World NULL /
2 UK 1 /1/
3 Wigan 2 /1/2
我的问题是:其他人在创建记录或更改记录的父项时如何保持层次结构ID列的最新状态?
注意:我正在使用LINQtoSQL(我使用计算的hierarchyid.ToString()列在代码中公开血统,以及存储过程为我提供hierarchyid查询的性能优势)。
对于插入/更新管理:
我考虑重写LINQtoSQL中新表的插入/更新过程。
我考虑使用存储过程来管理更新/插入新记录。
我考虑在插入/更新后使用递归触发器来执行基于ParentID的更新。
然而,我还没有决定采取哪种方式!
有人使用过这些方法来管理层次结构ID吗?是否有更好的方法我没有考虑到,或者我漏掉了什么非常明显的东西!!?