2010-03-12 7 views
1

J'ai un système avec 2 projets différents, l'un est appelé LINQ_Extensions et l'autre est ORM_Linq.LInq to SQL - Classe partielle - C#

Sur ORM_Linq, j'ai le diagramme LINQ avec les tables SQL "converties" en classes. Un de la classe est appelé "Tipos_Pago"

Dans l'autre projet, j'ai une autre classe (classe partielle) "Tipos_Pago". Je veux utiliser la méthode OnValidate pour valider les propriétés incluses dans la classe "Tipos_Pago", donc je crée cette classe partielle.

Dans les 2 projets i mis le même namespace "ORM_Linq" (j'ai changé le namespace du projet "LINQ_Extensions" pour avoir le même du projet "ORM_Linq")

Après ces Chages, Visual Studio me donner cette erreur:

C .. erreur 1 n ° de déclaration de définition trouvés pour la mise en oeuvre du procédé déclaration partielle 'ORM_Linq.Tipos_Pago.OnValidate (System.Data.Linq.ChangeAction)' \ Tipos_Pago.cs 13 22 Extensiones_Linq

Je n'ai aucune idée de ce qui s'est passé, quelqu'un peut-il Lp moi?

Merci, désolé pour mon pauvre anglais

Voici le code dans la classe partielle:

namespace ORM_Linq 
{ 
    public partial class Tipos_Pago 
    { 

     partial void OnValidate(System.Data.Linq.ChangeAction action) 
     { 
     //Valid code 
     } 
    } 
} 
+0

BTW; s'ils * sont * dans le même projet, si vous avez (par exemple) "Tipos_Pago.dbml', essayez ** pas ** pour créer un fichier (pour vos classes partielles) appelé" Tipos_Pago.cs "- il y a un bug dans le générateur de code (fixé en 4.0) cela signifie que cela devient douloureux. L'utilisation de ** n'importe quel autre nom de fichier ** (à l'exception de "Tipos_Pago.designer.cs", évidemment) est correct. –

+0

@Marc - Je n'ai pas été mordu par ce bug et je lui donne toujours le même nom que la classe. Avez-vous plus de détails ou un lien que vous pouvez partager? – tvanfosson

Répondre

2

Vous ne pouvez pas mettre en œuvre une partielle sur 2 projets, car ils doivent être compilées ensemble, les déclarations partial doivent toutes être dans le même projet.

Cette même règle s'applique aux méthodes et aux classes.

+0

ok, merci, je change le projet parce que j'ai un problème circulaire ref, je ne sais pas quoi faire, peut-être que je dois changer d'autre code. –

2

Vous devez créer votre implémentation partielle dans le même projet que les classes générées par le concepteur.

De Microsoft documentation:

All partial-type definitions meant to be parts of the same type must be defined in the same assembly and the same module (.exe or .dll file). Partial definitions cannot span multiple modules.