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 to SQL] Problème pour taper une base SYBASE


Sujet :

Accès aux données

  1. #1
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut [LINQ to SQL] Problème pour taper une base SYBASE
    Bonjour tout le monde

    J'essaye de mettre en place LINQ au boulot où toutes nos bases sont sous SYBASE.

    J'ai commencé par un ptit code tout simple:

    Ma classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [Table(Name="VC_EMTN_T")]
        public class EMTN
        {
            [Column(IsPrimaryKey = true)]
            public string isin { get; set; }
            [Column]
            public DateTime maturity { get; set; }
            [Column]
            public string currency { get; set; }
        }
    Mon DataContext:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class DemoContext : DataContext
        {
            public Table<EMTN> EMTNs;
            public DemoContext(DbConnection cnx) : base(cnx) { }
        }
    Mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DemoContext db = new DemoContext(cnx);
                db.Log = Console.Out;
                var query = db.EMTNs; 
                ObjectDumper.Write(query);
                Console.ReadLine();
    ObjectDumper est un ptit utilitaire MS pour écrire dans la console directement le résultat de la query.
    Ici, aucun problème, je récupère bien ce que je veux.

    Maintenant, j'essaye de filtrer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    DemoContext db = new DemoContext(cnx);
                db.Log = Console.Out;
                var query = from e in db.EMTNs
                            where e.isin.StartsWith("FR")
                            orderby e.isin ascending
                            select new { e.isin, e.currency };
     
                ObjectDumper.Write(query);
                Console.ReadLine();
    Et là, ça me pète une exception: Must declare variable '@p0'
    J'ai bien compris que LINQ fonctionne avec des requêtes paramétrées et que p0 correspond au critère
    e.isin.StartsWith("FR"). ET là je me dis, il a pas déclaré le paramètre au moment d'exécuter la requête.

    En affichant le log de LINQ, voilà ce que j'obtiens:

    Sur la dernière ligne, on voit qu'il se croit dans un context SQL Server 2005. Le problème vient certainement de là.

    Pourtant, quand je crée mon DataContext, l'object DbConnection que je lui passe "précise" bien qu'il tape une base SYBASE:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    private static DbProviderFactory dbFactory
            {
                get
                {
                    return DbProviderFactories.GetFactory(css.ProviderName);
                }
            }
     
            private static ConnectionStringSettings css
            {
                get
                {
                    return ConfigurationManager.ConnectionStrings["ESpread"];
                }
            }
     
            private static DbConnection _cnx;
            private static DbConnection cnx
            {
                get
                {
                    if (_cnx == null)
                    {
                        _cnx = dbFactory.CreateConnection();
                        _cnx.ConnectionString = css.ConnectionString;
                    }
     
                    return _cnx;
                }
            }
    Et mon fichier de config:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      <connectionStrings>
        <add name="ESpread" connectionString="DRIVER={Sybase System 11};SRVR=SYBREC_ESPREAD;UID=***;PWD=***;SelectMethod=1;" providerName="System.Data.Odbc"/>
      </connectionStrings>
    Je pense que je m'y prends mal lors de la création du DataContext mais je vois pas comment faire
    Une idée?

    Merci

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Un doute me traverse l'esprit: est-ce que Linq To Sql est seulement supporté par Sql Server?

  3. #3
    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
    Citation Envoyé par lutecefalco Voir le message
    Un doute me traverse l'esprit: est-ce que Linq To Sql est seulement supporté par Sql Server?
    oui
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  4. #4
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Points : 6 017
    Points
    6 017
    Par défaut
    Citation Envoyé par The_badger_man Voir le message
    oui
    +1

    Linq TO Sql ne fonction qu'avec SqlServer.

    D'après Microsoft, si la demande est la et si les éditeurs le souhaites, des providers pour les autres bases de données seront écrits mais pour l'instant c'est SqlServer only.

    Et si jamais tu penses à développer ton provider sache qu'il faudrait que tu réécrives la totalité des fonctions de conversion des requetes linq en requetes Inseres ici ton SGBD
    - MVP C#
    -Tout problème a une solution, le vrai problème est de trouver la solution .....
    - Linux & mono : l'avenir

  5. #5
    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 : 42
    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
    Points : 39 749
    Points
    39 749
    Par défaut
    Il existe déjà pas mal de providers LINQ pour différents SGBD, tu peux en trouver facilement sur Google. Mais à ma connaissance aucun n'est très abouti pour l'instant.

    Citation Envoyé par dev01 Voir le message
    D'après Microsoft, si la demande est la et si les éditeurs le souhaites, des providers pour les autres bases de données seront écrits mais pour l'instant c'est SqlServer only.
    C'est évident que la demande est là, Linq to SQL facilite tellement la vie... à mon avis ils veulent surtout pousser les gens à passer sur SQL Server à cause de Linq, ça leur rapporte plus que de développer les providers pour d'autres bases.
    Et il me semble que Entity framework ne supportera pas non plus d'autres SGBD que SQL Server

  6. #6
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    OK.
    En faisant une ptite recherche rapide sur Google, je dois passer par Linq To Entities.
    Vous confirmez?

  7. #7
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Et il me semble que Entity framework ne supportera pas non plus d'autres SGBD que SQL Server
    Si si: SQL Server, Oracle, DB2, etc....

  8. #8
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par lutecefalco Voir le message
    OK.
    En faisant une ptite recherche rapide sur Google, je dois passer par Linq To Entities.
    Vous confirmez?
    Oui car LINQ To Entitites, c'est de L'entity Framework donc MOR sur des bases autres que SQL Server

  9. #9
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Ok, je regarderai ça vendredi alors.
    Demain, je participe aux jeudis du développement sur Silverlight au Kremlin Bicètre.
    Y en a qui y vont?

  10. #10
    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 : 42
    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
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Thomas Lebrun Voir le message
    Si si: SQL Server, Oracle, DB2, etc....
    Ah, quand même... bonne nouvelle :-)

  11. #11
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par lutecefalco Voir le message
    Ok, je regarderai ça vendredi alors.
    Demain, je participe aux jeudis du développement sur Silverlight au Kremlin Bicètre.
    Y en a qui y vont?

    Moi j'y était

  12. #12
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Citation Envoyé par Thomas Lebrun Voir le message
    Moi j'y était
    On a du se croiser alors ^^

Discussions similaires

  1. Gros probléme pour restaurer une base
    Par D_light dans le forum Informix
    Réponses: 1
    Dernier message: 26/05/2009, 12h05
  2. [Linq to Sql] Problème d'insert en base de données
    Par Nyphel dans le forum Accès aux données
    Réponses: 3
    Dernier message: 21/11/2008, 23h31
  3. Problème pour créer une base sur Solaris
    Par snach dans le forum Installation
    Réponses: 3
    Dernier message: 29/08/2008, 11h07
  4. [SQL] Problème pour formuler une requête SQL
    Par renaud26 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 22/03/2008, 18h35
  5. Problème pour connexion à une base de mdb !
    Par soso78 dans le forum ASP
    Réponses: 2
    Dernier message: 12/07/2007, 16h49

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