Jusqu'à présent, j'utilisais des enregistrements actifs dans toutes mes applications pilotées par base de données C#. Mais maintenant, mon application nécessite que mon code de persistance soit séparé de mes objets métier. J'ai lu beaucoup de messages concernant le modèle de cartographie des données de Martin Fowler, mais ma connaissance de ce modèle est encore très limitée.Modèle de mappeur de données
Prenons l'exemple suivant:
Si j'ai 2 tables - Client et CustomerParameters. La table CustomerParameters contient les valeurs client par défaut pour la création d'un nouveau client.
Je devrai alors créer une classe CustomersMapper pour gérer toute la persistance du client. La classe Mes clients et CustomersList collabore ensuite avec cette classe de mappeur afin de conserver les données client.
je les questions suivantes:
Comment puis-je transférer les données brutes À & de ma classe client au mappeur sans enfreindre certaines règles d'affaires? DTO?
Est-il acceptable d'avoir une méthode SaveAll et LoadAll dans ma classe Mapper pour mettre à jour et charger les données de plusieurs clients? Si oui, dans le cas de SaveAll, comment le mappeur sait-il quand mettre à jour ou insérer des données?
La classe de mappage client sera-t-elle responsable de la récupération des valeurs par défaut de la table CustomerParameters ou sera-t-il préférable de créer un mappeur CustomerParameters?
Un outil de mappage O/R n'est pas vraiment disponible. La base de données que j'utilise est Transactional et nécessite que j'écrive mon propre Pattern Mapper.
Toutes les idées et commentaires seront grandement appréciés.
Pourriez-vous sur votre sens de « transactionnelles », en particulier l'opposant à SGBDR traditionnellement transactionnels comme MS-SQL ou MySQL? Sinon, j'appuierais la réponse de Petter sans équivoque. –
Im utilisant Btrieve (basé sur la méthode d'accès séquentiel indexé (ISAM)) qui n'est pas basé sur SQL. Tous les outils de mappage O/R que je connais ne prennent pas en charge Btrieve. – MegaByte