Quelle serait la meilleure méthode pour implémenter des fonctionnalités supplémentaires dans une couche de base de données utilisant Linq-to-SQL? Actuellement, je cherche à mettre en œuvre des fonctions pour ajouter des informations basées sur des préréglages et des tâches similaires?Où ajouter des fonctionnalités supplémentaires pour la couche de base de données (Linq-to-SQL)
Les insertions, mises à jour et suppressions nécessitent l'accès au DataContext
et dans les classes Table
vous n'avez pas accès au contexte. J'ai vu des solutions qui utilisent Singletons mais cela semble être un hack et je me demande si quelqu'un d'autre a rencontré ce problème et quelles étaient vos solutions? Existe-t-il une meilleure façon de mettre en œuvre des fonctionnalités similaires? La raison pour laquelle je cherche à ajouter cette fonctionnalité à la couche de base de données est que j'ai plusieurs applications qui utilisent toutes les mêmes objets de base de données et que je veux pouvoir utiliser ces fonctions depuis toutes les applications, donc je n'ai pas besoin de réécrire beaucoup de code.
Ce n'est pas tout à fait ce que je voulais dire. Je veux être capable de faire des actions complexes comme la mise à jour d'une table et l'ajout d'un enregistrement à une autre table en fonction des informations du premier. Supposons que j'ai sélectionné un enregistrement client et que je souhaite le mettre à jour avec des informations. Dans ce cas, je souhaite ajouter un autre enregistrement au tableau "Mises à jour" pour savoir quand les mises à jour ont eu lieu et qui les a effectuées. Ce n'est qu'un exemple bien sûr. Les choses à faire peuvent être plus complexes.
Fondamentalement je veux ajouter une méthode à un objet de table pour effectuer des modifications à une rangée spécifique dans cette table et puis faire des insertions et des mises à jour sur d'autres objets. Je sais que vous pouvez utiliser des cours partiels et je le fais déjà beaucoup.
Exemple:
db.Customers.Where(c => c.CustomerID == 5).AddOrder(orderDetails);
Je sens que je ne peux pas vraiment mettre mon problème en mots pour le rendre compréhensible :)