2008-09-26 65 views
4

我做了一个类从LINQ到SQL Clasees用VS 2008 SP1 Framework 3.5 SP1中,在这种情况下,我伸出部分如何编写Linq to SQL自动生成的部分扩展?

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 
+7

其实在非英语问题上有一项政策:http://blog.stackoverflow.com/2009/07/non-english-question-policy/ – 2009-10-06 16:10:45

回答

3
  • ,如果你提供这个方法,你必须在方法执行更新。

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

  • 如果实现插入,更新和删除方法在部分类中,LINQ到SQL运行时会打电话给他们它自己默认的方法,而不是时的SubmitChanges是调用。

尝试MiTabla.OnValidate

1

如果要实现这个方法而不是做自己,你做的方法调用ExecuteDynamicUpdate(项目)的更新;

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