如何编写Linq to SQL自动生成的部分扩展?
时间:2020-03-06 14:47:02 来源:igfitidea点击:
我使用VS 2008 SP1 Framework 3.5 SP1创建了一个从Linq到SQL Clasees的类,在这种情况下,我扩展了部分内容
partial void UpdateMyTable(MyTable instance){ // Business logic // Validation rules, etc. }
我的问题是,当我执行db.SubmitChanges()时,它执行UpdateMyTable并进行验证,但它没有更新,我收到此错误:
[Exception: Deliver] System.Data.Linq.ChangeProcessor.SendOnValidate(MetaType type, TrackedObject item, ChangeAction changeAction) +197 System.Data.Linq.ChangeProcessor.ValidateAll(IEnumerable`1 list) +255 System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode failureMode) +76 System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode) +331 System.Data.Linq.DataContext.SubmitChanges() +19
解决方案
- 如果提供此方法,则必须在该方法中执行更新。
http://msdn.microsoft.com/en-us/library/bb882671.aspx
- 如果在子类中实现Insert,Update和Delete方法,则在调用SubmitChanges时,LINQ to SQL运行时将调用它们,而不是其自身的默认方法。
尝试MiTabla.OnValidate
如果要实现此方法而不自己执行更新,则使该方法调用ExecuteDynamicUpdate(item);。
同样,分别对DeleteMyTable和InsertMyTable执行ExecuteDynamicDelete和ExecuteDynamicInsert。