public override void LinkReferences() { // link hierarchical keywords foreach (var keyword in _model.All) { // reference to parent and back reference to children if (!string.IsNullOrEmpty(keyword.Csv[2])) { keyword.Parent = _model.AllDic[int.Parse(keyword.Csv[2])]; keyword.Parent.Items.Add(keyword); } // csv array is not needed any more keyword.Csv = null; } // add loose keywords foreach (var keywordM in _model.All.Where(x => x.Parent == null)) { keywordM.Parent = _model; _model.Items.Add(keywordM); } // group for keywords automatically added from MediaItems metadata var aag = _model.Items.OfType <CategoryGroupM>() .SingleOrDefault(x => x.Name.Equals("Auto Added")); if (aag == null) { aag = _categoryGroupsM.GroupCreate("Auto Added", Category.Keywords); _model.Items.Insert(0, aag); } _model.AutoAddedGroup = aag; }