J'utilise Entity Framework 6 pour effectuer des opérations CRUD de base, ce qui est très bien. Je dois être en mesure de sélectionner mes objets dans une plage de dates, ce qui, encore une fois, est assez simple. Cependant, ces objets peuvent être répartis sur plusieurs bases de données qui sont essentiellement des entrepôts pour les données de l'année précédente. Une fois que nous les cherchons dans une plage de dates. Exemple: nous voulons tous les objets Foo entre le 1er janvier 2015 et le 9 novembre 2016; les données de Foo de 2015 seraient dans une base de données différente. Cela remonte à 2005. Tous les schémas ne sont pas identiques.Utilisation de Entity Framework avec des bases de données Archive
Nous pourrions avoir avoir 11 projets EF, ou 11 contextes et 11 chaînes de connexion. Cette solution a le problème d'avoir à ajouter du code chaque année lors de la création de l'archive. Cela semble être un hack. L'échange vers des méthodes de stockage Azure n'est pas une option dans un avenir prévisible.
Des solutions plus gracieuses?
Cela ressemble à un bon plan! Donc, nous regarderions une sorte d'expression rationnelle pour regarder la chaîne de connexion (probablement dans le web.config?) Et échanger. Les schémas pour les tableaux que je cherche sont similaires mais pas identiques. Est-ce que je ferais un remappage par fluence ou devrais-je juste me fier aux conventions d'EF pour faire la cartographie pour moi? (+1, mais je suis un <15 noob) – Jimbob
@Jimbob Vous ne pouvez pas remapper EF au moment de l'exécution, donc créez plusieurs 'DbContext's ou créez vos entités afin qu'elles englobent tous les champs possibles dans tous vos DB, puis vérifiez les valeurs nulles sur les champs qui sont incompatibles. Vous feriez bien d'avoir une couche d'application en face de votre couche d'accès aux données pour fournir une vue cohérente des données. – flipchart
Donc, nous examinerions un nouveau contexte chaque année? Je pense que l'un des administrateurs de base de données triera ce côté serveur avec un proc stocké auquel on peut passer des paramètres de date. Serait-ce mieux? – Jimbob