Si je veux compiler mes classes LINQ-> SQL dans une DLL pour les mettre à la disposition de mes développeurs, comment puis-je faire en sorte qu'elles puissent encore se connecter aux différentes méthodes partielles d'entité (OnValidate, par exemple)? Je sais que vous ne pouvez pas implémenter des méthodes partielles sur un assembly compilé, mais des suggestions sur comment extraire ce comportement (peut-être avec des événements?) Seraient appréciées.Création de méthodes partielles sur une classe LINQ-> SQL compilée
Répondre
Vous devrez peut-être personnaliser cette solution pour vos besoins, mais un moyen simple de publier des événements de méthodes partielles peut être fait comme ceci:
partial class LinqClass
{
public event Action<LinqClass, ChangeAction> OnValidating;
partial void OnValidate(ChangeAction action)
{
if (OnValidating != null)
{
OnValidating(this, action);
}
}
}
Vous pouvez ou ne pouvez pas besoin de transmettre différents paramètres, mais le Action
supportera de nombreux.
Pour autant que je sache, vous ne pouvez pas.
Lorsque des classes partielles sont rencontrées par le compilateur, elles les combinent pour former une classe complète. La seule façon dont je vois que vos besoins sont satisfaits est de rendre vos classes héritables, mais avec L2S, cela peut s'avérer être plus de problèmes que cela en vaut la peine.
EDIT:.
En ce qui concerne les événements, en fonction de la taille de votre compte de classe L2S, tout dépend de ce que vous êtes prêt à mettre dans cette solution pourrait fonctionner, mais prendra beaucoup de temps pour obtenir droite. En combinant Interfaces
avec des événements et des gestionnaires personnalisés, vous pouvez vous y rendre, soyez prêt pour l'investissement en temps s'il y a un grand nombre de cours que vous voulez.
Je gérer cela en publiant des événements publics à tout moment que vous désirez.
Si je veux compiler mon LINQ-> classes SQL dans une DLL pour fournir à mes développeurs
Je ne pense pas que ce soit une bonne idée. Il y a tellement de raisons pour lesquelles un modèle LinqToSql pourrait vouloir changer. Vous aurez probablement besoin de modifier votre modèle tout en découvrant de nouvelles connaissances dans votre domaine, etc.
En créant une DLL séparée « pour fournir à vos développeurs » vous créez une frontière artificielle qui est susceptible d'entraver l'efficacité du développement. Obtenir un système de contrôle de source peut être plus approprié pour ce que vous pouvez essayer d'accomplir (en étant très vague ici)
- 1. faisant référence à une classe C# non compilée
- 2. Recherche de requêtes SQL dans l'application compilée
- 3. Accès méthodes statiques sur une classe générique dans C#
- 4. Puis-je citer une requête compilée en tant que source de données dans une requête compilée?
- 5. Méthodes de groupe dans la classe abstraite
- 6. Création d'un alias de type pour une classe
- 7. Constructeurs de classes partielles
- 8. Utilisation de XmlIgnore sur les classes partielles générées
- 9. classes partielles Serializable
- 10. Création d'une classe de création d'index
- 11. SQL Server - Réplication transactionnelle (données partielles uniquement)
- 12. Comment faire une classe imbriquée PHP ou des méthodes imbriquées?
- 13. Utiliser "devrait" avec les méthodes de classe?
- 14. Création d'une nouvelle classe non-singleton basée sur une classe singleton
- 15. Appelez les méthodes de la classe mootools
- 16. Création d'un générique basé sur la classe de type
- 17. Création de classe avec APIRequest et réponse
- 18. Méthodes super classe en javascript
- 19. classe générique et méthodes génériques
- 20. Classe WCF DataContract avec méthodes
- 21. Redéfinir les méthodes de classe ou la classe
- 22. appel de méthodes sur une instance avec getattr [python]
- 23. Appel de méthodes en ligne (ascx) à partir d'un fichier codebehind à l'aide de classes partielles
- 24. Etendre une classe d'entités LINQ avec des méthodes constructor et rendre cette classe d'entité héritée de sa classe DataContext
- 25. Méthodes d'instance appelant des méthodes de classe appelant des méthodes d'instance
- 26. Ajout de DataAnnontations à des classes partielles générées
- 27. Comment obtenir une liste de méthodes sur une table?
- 28. Création d'une classe utilisateur générée Linq-to-SQL héritée de MembershipUser
- 29. Comment avoir des synchronisations incrémentielles partielles basées sur un GUID?
- 30. asp.net: classes partielles et héritage
Oui, dans la plupart des cas, je suis totalement en phase avec vous. Dans mon schéma, cependant, nous générons les classes linq-> sql à partir d'un outil interne que nous utilisons pour modéliser rapidement le modèle de base de données, ce qui nous permet de régénérer chaque fois que nécessaire, de cette façon les classes linq-> sql et notre base de données en synchronisation. – Mustafakidd