如何编码Linq to SQL自动生成的部分扩展?

时间:2008-09-26 13:29:45

标签: linq linq-to-sql partial-methods

我使用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

2 个答案:

答案 0 :(得分:3)

  • 如果您提供此方法,则必须在方法中执行更新。

http://msdn.microsoft.com/en-us/library/bb882671.aspx

  • 如果在部分类中实现Insert,Update和Delete方法,则在调用SubmitChanges时,LINQ to SQL运行时将调用它们自己的默认方法

尝试 MiTabla.OnValidate

答案 1 :(得分:1)

如果您想实现此方法但不自行更新,请调用方法ExecuteDynamicUpdate(item);

分别为DeleteMyTable和InsertMyTable执行ExecuteDynamicDelete和ExecuteDynamicInsert。