2010-06-09 16 views
0

est-il possible de décorer un champ d'un LINQ généré classe avec [Column(IsDbGenerated=true)] en utilisant une classe de contacts (qui est lié à la classe LINQ via [MetadataType(typeof(BuddyMetadata))])?Ajouter LINQ généré automatiquement la valeur marqueur [colonne (IsDbGenerated = true)] dans copain de classe

Mon but est de pouvoir effacer et repeupler le concepteur LINQ ORM sans devoir définir manuellement la propriété "Générer automatiquement la valeur" à chaque fois pour rétablir le fait que certaines colonnes sont générées automatiquement.

Merci!

Répondre

0

LINQ to SQL ne reconnaît pas les classes buddy.

Vous ne pouvez pas simplement ajouter l'attribut au partiel, car la propriété est déjà définie dans l'autre partiel (c'est ce que les classes de contacts ont été inventées pour résoudre). Une option consisterait à utiliser mon modèle T4 pour VS qui réplique la fonctionnalité de génération de code de LINQ to SQL (j'avais l'habitude de travailler sur l'équipe de produit) et vous pourriez mettre de la logique pour détecter votre génération automatique colonnes et émettent le bon attribut à chaque fois.

http://l2st4.codeplex.com

0

Vous pouvez utiliser un partial class - utilisez votre propre classe partielle et décorez-la avec l'attribut. Il sera à l'abri de la génération de code. Si vous devez décorer une méthode, vous pouvez également utiliser partial methods. Pour autant que je sache, les champs ne peuvent pas être décorés de cette façon sans que le générateur de code ne les détruise lors de la régénération.

+0

Mais je ne peux pas avoir le même champ déclaré deux fois (une fois dans ma classe partielle et une fois de l'ORM)?!? Je ne sais pas comment la classe partielle résoudrait mon problème. – Alex

+0

+1 @Alex tant que vous ne le déclarez que vous pouvez le faire, ce qui vous permet d'ajouter l'attribut. Ce que vous ne pouvez pas avoir est 2 implémentations. – eglasius

+0

@Freddy, non cela ne compile pas. Comme prévu je reçois les deux erreurs 'Le type' XYZ 'contient déjà une définition pour' CreationDate '', et 'Ambiguité entre' Domain.XYZ.CreationDate 'et' Domain.XYZ.CreationDate '. C'est quand j'ai une classe partielle XYZ avec le champ CreationDate, et aussi la classe régulière XYZ qui a été générée par l'ORM avec le même champ. – Alex