2010-11-22 8 views
1

dans ma base de données J'ai deux tables liées. Appelons-les Job et JobType Le travail a une clé étrangère jobTypeID qui fait référence à JobType.Classes personnalisées LinqToSql dérivées de plusieurs tables de base de données

Je voudrais créer une classe personnalisée dans le dbml avec des propriétés de deux tables DB ... essentiellement toutes les propriétés de l'emploi et la propriété JobTypeName de JobType

Ceci est un exemple simplifié mais jaimerais savoir si c'est possible avant de continuer.

En fin de compte je besoin d'une classe LinqToSql avec les propriétés appropriées pour passer à un analyseur qui gère la pagination, le tri, etc pour une grille de données côté client ...

Si elle aide à me diriger dans une meilleure direction, l'analyseur prend un IQueryable avec un type générique ... le type étant la classe linqtosql qui contient les données qui seront affichées dans la table.

Répondre

1

puisque toutes vos tables ont obtenu des relations et transférées avec succès à la DBML alors oui vous pouvez le faire

créer essentiellement une classe partielle pour vous classe d'emploi (classe partielle pour désigner la classe d'emploi créé par Linq designer) et mettre une propriété à l'intérieur qui renvoie le JobTypeName de table référencée

par exemple:

namespace ConsoleApplication1 
{ 
    /// <summary> 
    /// Partial class for job class created by LINQ Desinger 
    /// </summary> 
    public partial class Job 
    { 
     /// <summary> 
     /// Property to return the JobTypeName for this Job 
     /// </summary> 
     public string JobTypeName 
     { 
      get 
      { 
       if (JobType != null) 
        return this.JobType.JobTypeName; 
       return string.Empty; 
      } 
     } 
    } 
} 

J'espère que cela a aidé.

+0

merci d'avoir éclairci ça pour moi! – stephen776

0

Eh bien, je n'obtenir ce travail, mais pas comme je l'avais imaginé ... intitially

j'ai pu créer une vue dans la base de retourner les colonnes nécessaires mapper alors la vue d'une classe LinqToSql.

Les performances semblent correctes pour le moment.

Je suppose la bonne approche serait d'explorer le cadre de l'entité ado.net pour les projets futurs

+0

accepté réponse différente, mais cette solution a travaillé pour moi dans une pincée. – stephen776