2009-02-04 8 views
2

Est-ce que LINQ to SQL fournit des associations polymorphes prêtes à l'emploi comme le fait l'enregistrement actif Ruby on Rail? Sinon, existe-t-il une solution pour mapper manuellement ces associations?Associations polymorphes dans LINQ to SQL

Répondre

2

D'accord. Je n'ai trouvé aucun moyen de le faire, ni d'utiliser le concepteur ni d'ajouter manuellement des attributs de classe/méthode. De plus, il n'est pas possible d'avoir des contraintes de clé étrangère pour les associations polymorphes. J'ai écarté cette option, merci.

1

editted

SQL Server ne vous permet pas d'avoir une relation de clé étrangère sur une colonne qui n'est pas une clé primaire ou n'a pas une contrainte unique (ou index) sur elle. Il ne semble pas y avoir de restriction sur le fait que plusieurs tables utilisent la même colonne dans la table enfant que la clé étrangère. Le concepteur DBML découvre ces relations et crée des associations aux deux tables parent lorsque vous importez la table. Il semble cependant que le code généré par le concepteur ne sera généré que pour l'une des associations. C'est-à-dire que le concepteur montre correctement les associations, mais le code pour toutes sauf une d'entre elles est omis. De plus, les méthodes d'extensibilité et les propriétés ne semblent pas être définies correctement dans le code généré par le concepteur.

La même chose semble être vraie si vous ajoutez les associations à la main dans le concepteur. Une seule des associations réelles est implémentée dans le code et le code de l'autre classe parente semble irrémédiablement brisé. Il est possible que vous puissiez utiliser des implémentations de classes partielles pour ajouter les fonctionnalités requises pour correspondre à ce que le concepteur générerait, mais je n'ai pas essayé cela. En outre, LINQ2SQL ne prend pas en charge les relations plusieurs-à-plusieurs dès la première utilisation. Vous êtes limité à 1-1 et 1-plusieurs sans avoir à écrire le code vous-même.