2011-11-01 8 views
2

J'ai déterminé qu'un modèle relationnel est plus logique pour une collection particulière dans une base de données. Le problème est que le modèle de domaine a été démarré à l'origine avec un modèle incorporé et qu'il y a une grande quantité de code d'interface utilisateur qui s'attend à ce qu'il soit sous cette forme. La mise à jour du schéma de la base de données n'est pas un problème, mais je suis curieux de savoir s'il existe un moyen facile de remodeler les objets du domaine C# en un modèle relationnel plus démodé. J'ai commencé à écrire des mappeurs (avec AutoMapper) entre la version 1 et la version 2 (voir les classes ci-dessous), mais ça devient vraiment compliqué. Ci-dessous, un code fictif qui décrit un modèle de domaine similaire.MongoDB: Stockage normalisé dans le modèle de domaine intégré

// Existing 
class MyClass 
{ 
    List<Event> Events { get; set; } 
    List<Movie> Movies { get; set; } 
} 

// How it should have been modeled 
class MyClass 
{ 
    List<int> Events { get; set; } // Stores Event IDs 
    List<int> Movies { get; set; } // Stores Movie IDs 
}

La base de données devra être normalisée.

Si je dois remodeler le modèle de domaine, c'est bien; Je veux juste me sentir à l'aise, j'ai épuisé d'autres possibilités qui pourraient gagner du temps. Y at-il une solution facile à ce problème que je néglige?

Répondre

0

Étant donné le problème spécifique, il semblait que les deux seules options que je pouvais justifier étaient les deux que j'ai mentionnées dans ma publication initiale (mapper les données manuellement ou changer mon objet de domaine). En fin de compte, pour moi, le chemin de moindre résistance consistait à cartographier les données manuellement. J'apprécie le suggestion by pjvds, mais je ne pouvais pas justifier de passer à un nouvel ORM à ce stade du projet considérant que beaucoup d'autres choses fonctionnent mieux avec le pilote C# MongoDB et considérant qu'un mappeur n'est pas nécessaire pour les autres parties de notre base de données .

1

Si le seul but de votre restructuration est la base de données relationnelle, je vous conseille de regarder dans O/R mapping. Un mappeur O/R, comme NHibernate ou le Entity Framework, devrait être en mesure de mapper votre modèle incorporé à une base de données relationnelle. L'utilisation d'un mappeur O/R peut vous éviter de devoir remodeler votre domaine.

+0

Ce n'est pas une mauvaise idée, je ne voulais tout simplement pas utiliser un ORM dans le but de mapper un très petit morceau de la base de données entière - surtout si nous avons utilisé le pilote C# MongoDB pour tout le reste. – senfo

Questions connexes