Bra*_*onB 6 linq datacontext triggers submitchanges linq-to-sql
使用LINQ-to-SQL,我想在插入父实体时自动创建子记录.基本上,模仿SQL Insert触发器的工作方式,但是在代码中,以便可以进行一些额外的处理.
父亲与孩子有关联,但似乎我不能简单地在DataContext期间添加新的子记录SubmitChanges().
例如,
public partial class Parent
{
partial void OnValidate(System.Data.Linq.ChangeAction action)
{
if(action == System.Data.Linq.ChangeAction.Insert)
{
Child c = new Child();
... set properties ...
this.Childs.Add(c);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这将是理想的,但遗憾的是新创建的Child记录未插入数据库.有道理,因为DataContext有一个对象/语句列表,可能不喜欢在它的中间添加新项目.
类似地,拦截partial void InsertParent(Parent instance)DataContext中的函数并尝试添加Child记录会产生相同的结果 - 没有错误,但没有添加到数据库中.
有没有办法在不向表示层添加代码的情况下获得此类行为?
更新:
无论是OnValidate()和InsertParent()功能从DataContext的就是所谓的SubmitChanges()功能.我怀疑这是我正在尝试做的事情的固有困难 - 在将InsertOnSubmit()现有更改提交到数据库的过程中,DataContext将不允许插入其他对象(例如,通过).
理想情况下,我希望将所有内容保留在一个Transaction下,以便在插入/更新期间发生任何错误时,数据库中实际上没有任何更改.因此,我尝试模仿SQL触发器功能,允许通过对DataContext SubmitChanges()函数的单次调用自动插入子记录.
| 归档时间: |
|
| 查看次数: |
3721 次 |
| 最近记录: |