Web で見つけた例を使用して、GetReparentedValue を使用して子を再親化する関数を作成しました。
ただし、コードを実行すると、次のエラーが表示されます: オブジェクトに重複キーを挿入できません。
理由はわかりました (私は子供を再親化しようとしており、新しい親には既に子供がいるため、新しい親構造内の子の MAX パス (hierarchyid) を知る必要がありますが、実際にどのようになっているのかわかりません)それをするつもりです。
パス 0x58
古いパス 0x
新しいパス 0x68
SqlCommand command = new SqlCommand("UPDATE Structure SET " +
"Path = " + path + ".GetReparentedValue" +
"(" +
oldPath + ", " + newPath +
")" +
"ParentID = @id " +
"WHERE Path = " + path, _connection);
子を追加するときにこれを行う必要があるため、これを上記のクエリのどこかに追加する必要があると思いましたが、どこにあるのかわかりませんpath + ".GetDescendant(" + lastChildPath + ", NULL)
データベース テーブル
StructureID int Unchecked
Path hierarchyid Unchecked
PathLevel ([Path].[GetLevel]()) Checked
Description nvarchar(50) Checked
ParentID int Checked
ParentPath ([Path].[GetAncestor]((1))) Checked
誰にも何か提案はありますか?
助けてくれてありがとう:-)
クレア