2009-05-21 8 views
0

Scénario: Les utilisateurs saisissent des données complexes (interface WPF) et conservent les données avec un OR-mapper dans SQLServer. J'utilise OpenAccess par Telerik.Enregistrer partiellement l'entrée de données

Mais maintenant, pensez à la situation suivante: On a presque terminé le travail sur un cas d'utilisation, mais maintenant, certaines informations sont manquantes. parce que les données qu'il a tapées ne remplissent pas toutes les règles d'affaires (les champs obligatoires peuvent être encore vides) il ne peut pas sauvegarder son travail.

Malheureusement, il ne peut pas non plus obtenir les informations manquantes. Alors que peut-il faire. Rejeter tout le travail, mauvaise idée, ne faites rien plutôt que d'attendre, pas de bonne idée.

Maintenant, mon idée est venue. Il serait utile, si l'utilisateur peut «parquer» son problème non résolu et commencer à travailler sur un cas d'utilisation différent. Et, après qu'il a garé son travail, il est capable de fermer le système et d'essayer de le résoudre un autre jour. (Et en passant, il peut continuer sur un autre système)

Mais, où sérialiser? L'objet métier n'est pas sérialisable car il contient des informations d'identité provenant de l'ORM. Présentation de certains objets intermédiaires explose les instructions d'affectation. UI? Peut-être, quelqu'un connaît une solution existante, ou a eu quelques bonnes idées.

Répondre

1

utilisez un champ d'état pour suivre s'il respecte toutes les règles ou non. permettez-lui de sauver sans tenir compte des règles, mais signalez-le comme tel. quand il valide changer le drapeau. laissez seulement le reste des utilisateurs voir/travailler avec des éléments valides.

0

Qu'en est-il du motif Memento? Prenez toutes les données sérialisables et placez-le dans une autre classe, puis sérialisez-le et enregistrez-le dans la base de données. Si nécessaire, désérialisez-le dans la classe memento, puis remplissez l'objet d'origine.