![]() |
1
6
经过更多的研究,我相信我已经找到了解决办法。当对象从集合中移除时,将其标记为删除由关联属性的deleteonnull参数控制。 当两个表之间的关系标记为OnDelete Cascade时,此参数设置为true。 不幸的是,无法从设计器中设置此属性,也无法从*dataContext.cs文件的分部类中设置此属性。在不启用级联删除的情况下设置它的唯一方法是手动编辑*dataContext.designer.cs文件。 在我的例子中,这意味着要查找页面关联,并添加deleteonnull属性:
并添加deleteonnull属性:
注意,需要将属性添加到pagetag类的page属性中,而不是相反。
参见:
|
![]() |
2
1
对不起,我的错。那不行。 看起来您需要在存储库中完成这项工作,而不是在页面类中。在这里,您可以访问原始数据上下文。 有一种方法可以“附加”原始数据上下文,但是当您这样做时,它已经变成了代码的味道。 |
![]() |
3
0
在您的LINQ to SQL实体图中,您有链接页和页标记表的关系吗?如果不这样做,那就是为什么在page类中看不到pagetags类的原因。 如果pagetags数据库表中的外键设置为允许空值,则即使在SQL Server上创建了关系,当您将表拖到设计器中时,linq to sql也不会创建链接。 |
![]() |
4
0
这是其中一个区域,或映射可能会变得有点毛茸茸的。提供这个tagstring属性使事情变得更加方便,但从长远来看,它混淆了当某人使用tagstring属性时实际发生的事情。通过隐藏您正在执行数据修改的事实,可以很容易地有人来设置标记字符串,而不必在DataContext范围内使用页面实体,这可能会导致一些难以发现的错误。 更好的解决方案是使用L2S模型设计器在页类上添加tags属性,并要求直接在DataContext范围内的tags属性上编辑page tags。将Tagstring属性设置为只读,这样就可以对其进行genreated(并且仍然提供一些便利),但是可以消除设置该属性的混淆和困难。这种更改澄清了意图,并使发生的事情和页面对象的使用者需要做的事情变得明显。 由于标记是页面对象的属性,只要它附加到DataContext,对该集合的任何更改都将正确触发数据库中的删除或插入,以响应删除或添加调用。 |
![]() |
5
0
亚伦 显然,您必须循环浏览页面标签记录,并为每个记录调用deleteonsubmit。当调用SubmitChanges时,Linq to SQL应该创建一个聚合查询来同时删除所有记录,因此开销应该最小。 代替
具有
|
![]() |
6
0
亚伦: 将DataContext成员添加到PageTag分部类中。
..等 |
![]() |
7
0
应Robert Harvey的要求发布更大的代码示例: dataContext.cs文件:
存储库方法:
用途:
|
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 4 月前 |
![]() |
Pavel Foltyn · 如何在C中生成逆字典# 6 月前 |
![]() |
ewok · 基于种子和上一个值创建值列表 10 月前 |
|
Vasu V · 将foreach转换为select语句 11 月前 |
![]() |
Amber Cahill · LINQ Any()会在没有参数的情况下枚举吗? 11 月前 |
![]() |
Modest · 使用命名空间和文本值序列化xElement 1 年前 |