IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Accès aux données Discussion :

[Linq 2 SQL] Problème de modélisation


Sujet :

Accès aux données

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut [Linq 2 SQL] Problème de modélisation
    Salut,

    Peut-on, en utilisant le designer LINQ to SQL, modéliser des "self-associations" (je vois pas trop comment le dire en français...) ? Autrement dit, une ligne d'une table pointe vers N autres lignes de la même table ?

    Au niveau data-model, c'est assez simple, il suffit de créer une table d'association, malheureusement LINQ ne modélise pas l'association comme je voudrais. Ce sera plus clair avec un exemple concret:

    J'ai créé une petite base de données sous SQL Server, avec le schéma suivant:


    Une ligne de user pointe vers N autres lignes de user via la table contact_list.

    J'ai ensuite créé la DAL avec le designer LINQ, cela donne le schéma suivant:


    Le designer me génère une propriété pour l'association User->ContactList, malheureusement (et c'est logique en fait) cette propriété n'est pas de type EntitySet<User>, mais de type EntitySet<ContactList>... ce qui fait que c'est beaucoup moins pratique à manipuler !

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    		[Association(Name="user_contact_list1", Storage="_Contacts", ThisKey="Id", OtherKey="UserId")]
    		public EntitySet<ContactList> Contacts
    		{
    			get
    			{
    				return this._Contacts;
    			}
    			set
    			{
    				this._Contacts.Assign(value);
    			}
    		}
    La classe ContactList ne correspond à rien de concret, elle a juste un rôle technique pour réaliser l'association, donc j'aimerais mieux ne pas avoir à m'en servir dans le code.

    Y a-t-il a une manière de modéliser ça correctement, si possible en utilisant le designer ?

    J'ai bien une idée pour le faire à la main, mais ça me semble pas idéal... comme je ne peux pas modifier le code auto-généré (la regénération écrasera mes modifs), je pensais créer une autre partie de la classe (elle est déclarée partial) dans un autre fichier, pour ajouter une propriété permettant d'accéder directement aux users de la contact list:

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
        public partial class User
        {
            public EntitySet<User> TheContacts
            {
                get
                {
                    EntitySet<User> contacts = (from ContactList cl
                                                in this.Contacts
                                                select cl.Contact) as EntitySet<User>;
                    return contacts;
                }
            }
     
        }

    En attendant mieux, je vais faire comme ça, mais si vous avez mieux je suis preneur !

    Je sais pas si j'ai été très clair, donc n'hésitez pas à poser des questions.

    Merci !
    Images attachées Images attachées   

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Linq to SQL] problème de transaction avec update
    Par jowsuket dans le forum Accès aux données
    Réponses: 2
    Dernier message: 25/09/2008, 10h15
  2. [MS SQL] Problème de modélisation de table
    Par DotNET74 dans le forum Développement
    Réponses: 2
    Dernier message: 24/08/2008, 15h29
  3. [LINQ to SQL] Problème pour taper une base SYBASE
    Par lutecefalco dans le forum Accès aux données
    Réponses: 11
    Dernier message: 20/06/2008, 07h57
  4. [Linq to sql] Problème de requête
    Par Ntotor dans le forum Accès aux données
    Réponses: 4
    Dernier message: 09/05/2008, 20h37
  5. [Linq 2 SQL] Problème de modélisation
    Par tomlev dans le forum Framework .NET
    Réponses: 5
    Dernier message: 12/02/2008, 23h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo