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 :

Help sur linq sql


Sujet :

Accès aux données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Points : 109
    Points
    109
    Par défaut Help sur linq sql
    Bonjour,

    Voila j'essaie d'utiliser le mapping d'objet avec linq sql.

    J'arrive bien à mapper une classe et récupérer les info persistant de la base mais je bloque quand il faut faire une jointure avec une autre table.

    En gros j'ai 2 classes Profiles et Sources. La classe Profiles doit chargé une référence de Source.

    J'ai tenté dans Profile :

    Dans le create :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    this._sourceDirect = new EntityRef<Source>();
     
    [Association(Storage = "_sourceDirect" , ThisKey = "SourceDirectID")]
     public Source SourceDirect
        {
            get { return this._sourceDirect.Entity; }
            set { this._sourceDirect.Entity = value; }
      }

    Etc ....

    Mais à priori ça ne récupère pas ma source (toujours à null).

    J'ai vu qu'il y avais peut-être une astuce avec la propriété DeferredLoadingEnabled = false pour le data context mais sans résultat.

    Peut-être qu'il faut ajouté une contrainte dans ma base de donnée ?

    Bref si quelqu'un a des infos je suis preneur.

    Merci.
    Seb.

  2. #2
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Points : 8 538
    Points
    8 538
    Par défaut
    Essaye ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DataLoadOptions options = new DataLoadOptions();
    options.LoadWith<Profiles>(pro => pro.MySource);
    dataContext.LoadOptions = options;

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Points : 109
    Points
    109
    Par défaut
    Merci pour ton aide.

    Maintenant j'ai un autre problème, j'arrive bien à récupérer mon entity Source par contre quand j'insère une nouveau profile comme ceci :

    Table<Profile> profilesTable = db.GetTable<Profile>();
    profilesTable.InsertOnSubmit(profile);

    Il essaie d'insérer une valeur dans la base pour mon entity Source.

    Comment faire en sorte pour qu'il lance une requête d'insertion uniquement sur la table Profile mais pas sur Source.

    Merci.
    Seb

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Points : 109
    Points
    109
    Par défaut
    Bonjour,

    En faite j'ai un problème car il essaie de me faire un insert en cascade sur mes tables.

    Il essaie d'insérer une valeur dans ma Table Source, valeur qui existe déjà.

    Bref comment faire en sorte qu'il arrête d'insérer en cascade.

    Je suppose que je vais avoir le même problème pour le suppression.

    En tout les cas je galère, une aide serait la bienvenu.
    Merci.
    Seb

  5. #5
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Points : 8 538
    Points
    8 538
    Par défaut
    Tu as créé tes entités avec le designer de Visual Studio ou à la main ?

    Il y a peut-être un problème avec les relations entre les tables dans la base de données. Tu as peut être définie la relation entre Profile et Source tel que un profile doit toujours avoir une source. Idem pour les autres.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Points : 109
    Points
    109
    Par défaut
    Alors à titre pédagogique j'ai crée mes entités à la main pour bien comprendre les choses.

    A priori dans ma base il n'a aucune relation définie entre mes deux tables.

    Voila comment j'ai écrit ma relation à la main (un extrait) :

    private System.Nullable<int> _sourceDirectID;
    private EntityRef<Source> _sourceDirect;

    public Profile()
    {
    this._sourceDirect = new EntityRef<Source>();

    }


    /// <summary>
    /// A default ID direct source to break PlayList
    /// </summary>
    [Column(Name = "SOURCE_DIRECT", Storage = "_sourceDirectID")]
    public System.Nullable<int> SourceDirectID
    {
    get { return _sourceDirectID; }
    set { _sourceDirectID = value; }
    }

    /// <summary>
    /// A default direct source to break PlayList.
    /// </summary>
    [Association(Storage = "_sourceDirect", ThisKey = "SourceDirectID" ,IsForeignKey= false)]
    public Source SourceDirect
    {
    get { return this._sourceDirect.Entity; }
    set { this._sourceDirect.Entity = value; }
    }


    Bref il doit certainement manquer quelque chose pour faire en sorte que un profile n'a pas toujours une source.
    Et même si c'était le cas je vois pas pourquoi il essai de me créer une nouvelle source systématiquement.

    Peut-être que je dois créer aussi une relation dans la classe Source mais je vois pas pourquoi.

    Si vous avez une piste je suis preneur, ça m'aiderais bcp pour avancer.

    Merci bcp.
    Seb.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Points : 109
    Points
    109
    Par défaut
    C'est bon j'ai compris mon problème, c'était juste un problème de dataContext.

    Il faut utiliser le même dataContext.

    Un petit coup de pattern singleton et c'est parti.

    En tout les cas merci pour votre aide.

    Seb.

Discussions similaires

  1. Petite question sur linq to sql.
    Par polux31 dans le forum Linq
    Réponses: 8
    Dernier message: 12/05/2011, 19h19
  2. rownum sur linq to sql
    Par mvc_dev dans le forum ASP.NET MVC
    Réponses: 4
    Dernier message: 28/01/2011, 12h16
  3. Informations sur Linq / Sql Server
    Par maxwel56 dans le forum Linq
    Réponses: 5
    Dernier message: 25/01/2010, 10h09
  4. Requete SQL help sur SQL serveur 2008
    Par mephiston dans le forum Langage SQL
    Réponses: 8
    Dernier message: 22/09/2009, 17h58
  5. [HELP] syntaxe sur parametres SQL
    Par dahu17 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 25/06/2007, 18h54

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