【问题标题】:How to code the partial extensions that Linq to SQL autogenerates?如何编写 Linq to SQL 自动生成的部分扩展?
【发布时间】:2008-09-26 13:29:44
【问题描述】:

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

【问题讨论】:

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


【解决方案1】:
  • 如果提供此方法,则必须在方法中执行更新。

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

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

试试 MiTabla.OnValidate

【讨论】:

    【解决方案2】:

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

    同样,分别为 DeleteMyTable 和 InsertMyTable 执行 ExecuteDynamicDelete 和 ExecuteDynamicInsert。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多