Est-il possible de définir la relation OneToOne (cardinalité) lors de la génération de dbml avec SQLMetal? Par défaut, le schéma dbml généré avec la relation OneToMany.OneToOne relation (cardinalité) dans LINQ to SQL avec SQLMetal
Répondre
Utilisez-vous le concepteur DBML? Si c'est le cas, vous devriez pouvoir cliquer avec le bouton droit sur la flèche qui représente la relation et sélectionner Propriétés. La propriété Cardinality peut ensuite être définie dans OneToOne dans la boîte de dialogue des propriétés.
Oui, je peux utiliser le concepteur DBML, mais je veux automatiser ce processus! – Sasha
Si vous voulez que toutes les relations soient OneToOne, vous pouvez écrire un script de description pour analyser le fichier DBML (qui est juste XML) pour les éléments 'Association', et ajouter un attribut' Cardinality = "One" 'à chaque élément. –
Dans mon cas, je n'ai besoin que de deux relations OneToOne. Mais il semble que de toute façon j'écrirai une sorte de script. – Sasha
J'utilise SqlMetal pour produire un fichier Dbml, puis j'utilise un xslt pour modifier le contenu de celui-ci (en utilisant cette base xslt: http://blogs.msdn.com/ploeh/archive/2008/04/10/AutomaticallyGeneratingLINQToSQLModelsFromTSQL.aspx), par exemple. changer la cardinalité ou changer le type pour Enums.
Merci, je vais essayer votre approche. – Sasha
aussi, il semble que linq2sql supporte les références de clés primaires des deux côtés, alors faites juste une référence (juste lika une relation un-à-plusieurs normale) et mettez cette association à cardinialité. –
est la relation pointant sur la clé primaire sur les deux tables? Ou la table secondaire a-t-elle une clé primaire différente et la relation va à une colonne de clé étrangère? –
Relation pointant sur la clé primaire des deux tables. – Sasha