Τον τελευταίο καιρό με προβληματίζει από σχεδιαστικής πλευράς ένα θέμα που έχει να κάνει με validation.
Χρησιμοποιώ το interface IDataErrorInfo στα custom objects μου. Βασικά το Root είναι αυτό που το κάνει implement από το οποίο κάνουν inherit τα objects μου. Επίσης δείχνω τα errors, αν προκύψουν στην φόρμα μου χρησιμοποιώντας το ErrorProvider control.
Το πρόβλημα, σχεδιαστικά πάντα μιλάω είναι πως έχω μερικά objects τα οποία για να γίνει validate κάποιο ή κάποια από τα properties τους θα πρέπει να κοιτάξω στην βάση.
Σχεδιαστικά η εφαρμογή έχει entities και data models που εκτελούν όλες τις λειτουργίες με την βάση. Οπότε πριν από την αποθήκευση έχω την δυνατότητα να κάνω έναν check και να πιάσω λάθη αν υπάρχουν. Όμως θα ήθελα στο σημείο της φόρμας, καθώς ο χρήστης περνάει μία τιμή να του έβγαινε εκεί το λάθος και όχι όταν πατήσει Αποθήκευση.
Όπως καταλαβαίνετε το πρόβλημα είναι ότι δεν έχω δώσει την δυνατότητα στα Entities να επικοινωνούν με την βάση, αυτό το αναλαμβάνουν τα Data Models. Οπότε πως θα μπορούσα να το κάνω;
Στο μυαλό μου έχω την σκέψη να δημιουργήσω validator class ανά object και να μεταφέρω εκεί όλη την λογική του validation. Ο κάθε validator θα κάνει implement ένα συγεκριμένο Interface στο οποίο θα βλέπει το RoorObject μου. Σκέφτομαι λοιπόν να δώσω στους validators την δυνατότητα αυτή να επικοινωνούν με την βάση.
Υπάρχει κανείς που έχει στο μυαλό του κάτι άλλο; Μία ιδέα;
Ευχαριστώ.