¡Esta es una revisión vieja del documento!
Podemos agregar reglas de validación a nivel de entidad, es decir, no sólo para las propiedades sino para la tabla en sí, y poder validar así datos que estén relacionados.
public partial class Order { public partial void OnValidate () { if (this.dataOrder > this.dataDelivery) throw ("La fecha de pedido es mayor que la de entrega!"); } }
Al hacer una llamada al método SubmitChanges se llamarán a otros métodos según la acción realizada y donde podemos lanzar nuestras excepciones para que dicha acción no llegue a realizarse. Por ejemplo, para una clase Order estos serían de la siguiente forma:
public partial class NorthwindDataContext { partial void InsertOrder (Order instance) { this.ExecuteDynamicInsert(instance); } partial void UpdateOrder (Order instance) { this.ExecuteDynamicUpdate(instance); } partial void DeleteOrder (Order instance) { this.ExecuteDynamicDelete(instance); } }
Pero podemos ir aún más lejos y hacer nuestras validaciones\comprobaciones en el método SubmitChanges de una clase propia que creemos:
public class MyNorthwindDataContext : NorthwindDataContext { public override void SubmitChanges (System.Data.Linq.ConfictMode failureMode) { ChangeSet changes = this.GetChangeSet(); changes.AddedEntities ... base.SubmitChanges (failureMode); } }