Как кодировать частичные расширения, которые автоматически генерирует Linq to SQL? - PullRequest
4 голосов
/ 26 сентября 2008

Я сделал класс из Linq для SQL Clasees с VS 2008 SP1 Framework 3.5 SP1, в этом случае я расширил частичный

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 ]

3 голосов
/ 26 сентября 2008
  • если вы предоставите этот метод, вы должны выполнить обновление в методе.

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

  • Если вы реализуете методы Insert, Update и Delete в своем частичном классе, среда выполнения LINQ to SQL будет вызывать их вместо своих собственных методов по умолчанию при вызове SubmitChanges.

Попробуйте MiTabla.OnValidate

1 голос
/ 28 сентября 2008

Если вы хотите реализовать этот метод, но не производите обновление самостоятельно, вы вызываете метод ExecuteDynamicUpdate (item);

Аналогично ExecuteDynamicDelete и ExecuteDynamicInsert для DeleteMyTable и InsertMyTable соответственно.

...