2009-08-26 3 views
0

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

1

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.

1

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.

MSDN - Partial Classes

0

Je gérer cela en publiant des événements publics à tout moment que vous désirez.

0

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)

+0

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

Questions connexes