2009-04-14 11 views
0

Afin d'aider les utilisateurs à saisir des données répétitives, j'essaie d'implémenter un système où de nombreuses propriétés précédentes sont mémorisées lors de l'ajout de nouvelles données.ORM - Sauvegarde/Restauration des valeurs par défaut pour un objet DB avec C#

Est-il possible d'utiliser la fonctionnalité Properties.Settings.Default.MySetting ou existe-t-il une meilleure méthode pour faire ce genre de chose?

+0

par curiosité, qu'est-ce que l'ORM a à faire avec ce que vous demandez? – lomaxx

+0

Très peu. Je pensais juste qu'il pourrait y avoir une méthode généralement acceptée pour faire cela. – Damien

Répondre

0

Vous ne pouviez pas faire une copie (profonde) de l'objet précédent et l'utiliser comme objet suivant, permettant aux utilisateurs d'écraser tous les champs modifiés? De cette façon, les champs seraient ce que l'utilisateur a entré en dernier, individualisés par utilisateur et mis à jour au fur et à mesure qu'ils traitaient ces champs.

Si vous avez une façon de vous souvenir de la dernière chose entrée par utilisateur, vous pouvez même le conserver entre les sessions.

Les OP commentaires:

Malheureusement, faire une copie en profondeur d'un objet bousille ObjectContext lorsque les relations sont impliqués. Un nouvel objet avec des relations doit avoir de nouveaux objets relationnels créés ou des objets existants doivent être interrogés à partir de la base de données.

Alors? Si la relation est à une autre entité (une clé étrangère dans la base de données), c'est une relation uses-a, et vous la retenez simplement. Si c'est un attribut, vous le copiez. Par exemple, disons que votre formulaire est une entrée de données sur les employés, et qu'il comporte une liste déroulante pour, je ne sais pas, employeeType, soit "Exempt" (pas d'heures supplémentaires) ou "Non-exempt" (heures supplémentaires). Vous avez extrait les valeurs de employeeType de la base de données et vous souhaitez que l'employé suivant ait les mêmes valeurs que le dernier employé entré, afin de sauvegarder les saisies de données. Donc, votre copie profonde associerait simplement l'employé copié à la même base de données employeeType.

Mais pour les données d'attribut (comme le nom), vous devez en faire une copie.

+0

Malheureusement, faire une copie profonde d'un objet perturbe le contextcontext lorsque des relations sont impliquées. Un nouvel objet avec des relations doit avoir de nouveaux objets relationnels créés ou des objets existants interrogés à partir de la base de données. – Damien

-1

Cela dépend de ce que vous essayez d'atteindre. La bonne chose à propos de l'utilisation de la fonctionnalité MySetting est que les propriétés "Most Recent" peuvent être conservées la prochaine fois que l'application est fermée. Je suppose qu'il s'agit d'une application winforms, donc je garderais une instance en mémoire cache de la dernière sauvegarde de chacun des objets de sauvegarde dans une hashtable quelque part, puis lorsque vous créez un nouveau formulaire, recherchez l'objet de sauvegarde dans la table de hachage et liez les propriétés requises à la nouvelle instance du formulaire.

Vous pouvez ensuite sérialiser et conserver la totalité de la table de hachage dans l'objet MySettings si vous le souhaitez afin de pouvoir l'utiliser chaque fois que l'utilisateur accède à l'application.