2008-09-15 15 views
3

Vous avez essayé le nouvel outil de création de site Dynamic Data fourni avec .NET 3.5. L'outil utilise les sources de données LINQ pour obtenir les données de la base de données à l'aide d'un fichier de contexte .dmbl pour référence. Je suis interseted dans la personnalisation d'une grille de données, mais j'ai besoin de montrer des données de plus d'une table. Est-ce que quelqu'un sait comment faire cela en utilisant l'objet LINQ Datasource?Source de données Linq .NET 3.5 et jointures

Répondre

2

Si les tables sont connectées par une clé étrangère, vous pouvez facilement référencer les deux tables car elles seront jointes par linq automatiquement (vous pouvez voir facilement si vous regardez dans votre dbml et il y a une flèche reliant les tables) - sinon, voyez si vous pouvez en ajouter un.

Pour ce faire, vous pouvez simplement utiliser quelque chose comme ceci:

<%# Bind("unit1.unit_name") %> 

Où dans le tableau, « unité » a une clé étrangère qui fait référence à une autre table et tirez-vous que « la propriété de l'unité de « UNIT_NAME »

J'espère que cela a du sens.

0

Vous ne pouvez pas mettre plus d'un objet/datasource sur une grille de données. Vous devrez créer un ConceptObject unique qui combine les propriétés exposées des entités de la pièce. Essayez d'utiliser DB -> Entités L2S -> ConceptObject. Vous devez être très artificiel si le modèle de base de données correspond au champ Champ-ConceptObject.

2

(EDIT mal compris la question, la révision de ma réponse à ce qui suit)

Votre LinqDataSource pourrait pointer vers une vue, qui vous permet de résoudre le problème de ne pas être en mesure d'exprimer une jointure dans l'élément réel . A partir de "How to: Create LINQ to SQL Classes Mapped to Tables and Views (O/R Designer)":

Le concepteur O/R est un simple mappeur relationnel d'objet car il ne prend en charge que les relations de mappage 1: 1. En d'autres termes, une classe d'entité peut avoir uniquement une relation de mappage 1: 1 avec une table ou une vue de base de données. Le mappage complexe, tel que le mappage d'une classe d'entité à plusieurs tables, n'est pas pris en charge. Toutefois, vous pouvez mapper une classe d'entité à une vue qui joint plusieurs tables liées.

+0

Oui, mais comment faire cela en utilisant l'objet LINQDataSource? – Norge

0

Vous feriez mieux d'utiliser un ObjectDataSource lorsque vous voulez faire des Linq plus complexes et lier votre Grid à ObjectDataSource. Vous devez cependant faire attention aux types anonymes qui pourraient vous causer des problèmes, mais tout est possible ...