快速澄清:
我希望在父DataContext调用SubmitChanges()时删除子对象,而不是之前。我希望TagString的行为与Page对象的任何其他属性完全相同。
我想启用以下代码:
Page page = mDataContext.Pages.Where(page => page.pageId = 1);
page.TagString = "new set of tags";
//Changes have not been written to the database at this point.
mDataContext.SubmitChanges();
//All changes should now be saved to the database.
以下是详细情况:
为了更容易地处理标签集合,我已经向页面对象添加了一个属性,将标签集合视为字符串:
public string TagString {
get {
StringBuilder output = new StringBuilder();
foreach (PageTag tag in PageTags) {
output.Append(tag.Tag + " ");
}
if (output.Length > 0) {
output.Remove(output.Length - 1, 1);
}
return output.ToString();
}
set {
string[] tags = value.Split(' ');
PageTags.Clear();
foreach (string tag in tags) {
PageTag pageTag = new PageTag();
pageTag.Tag = tag;
PageTags.Add(pageTag);
}
}
}
基本上,这个想法是当一串标签被发送到该属性时,对象的当前标签将被删除并生成一个新的标签集来代替它们。
我遇到的问题是这行代码:
PageTags.Clear();
当更改提交时,实际上不会从数据库中删除旧标签。
寻找方法时,似乎“正确”的删除方式是调用数据上下文类的DeleteOnSubmit方法。但是我在页面类中似乎无法访问DataContext类。
有没有人知道如何在页面类中标记要从数据库中删除的子元素?