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

Entity Framework Discussion :

Code First Modeles multi database


Sujet :

Entity Framework

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2003
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2003
    Messages : 197
    Points : 115
    Points
    115
    Par défaut Code First Modeles multi database
    Bonjour à tous.

    Désolé pour ce titre un peu tordu mais je ne vois rien de mieux concernant mon souci.

    J'utilise actuellement CodeFirst pour accéder à une base de donnée Mysql.

    J'ai défini, mes modèles, mon contexte, mon unitOfWork, enfin bref tout ce qui est nécessaire pour communiquer avec ma base. Les tests sont ok ça fonctionne très bien.

    J'aimerais donc me baser sur mon code pour basculer sur une base SQLite, ceci afin de pouvoir développer sans nécessairement utiliser un serveur Mysql et aussi pour avoir la possibilité de changer de base de donnée quand ça me chante.

    VOici un petit exemple centré sur une table :

    Modèle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     public class BordCarte
    {
    [DataMember]
    public int Id { get; set; }
     
    [DataMember]
    public string Libelle { get; set; }
     
    public BordCarte()
    }
    Mapping :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        internal partial class BordCarteMapping : EntityTypeConfiguration<BordCarte>
        {
            public BordCarteMapping()
            {
                this.HasKey(t => new { t.Id });
                this.ToTable("bord_carte", "sqlite");
                this.Property(t => t.Id).HasColumnName("BOC_ID").HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
                this.Property(t => t.Libelle).HasColumnName("BOC_LIBELLE").IsRequired();
            }
        }
    Le souci actuellement est que SQLite ne support que des int64 donc lorsqu'il essaie de mapper la colonne Id, je récupère une exception.

    J'aimerais donc avoir votre vision concernant mon souci, mon but est de n'avoir qu'un seul modèle et de ne switcher que la partie mapping, afin de devenir totalement indépendant de la base.

    Dois je modifier mon modèle pour prendre en compte les spécificités de SQLIite ?

    Puis je intervenir au niveau du mapping pour caster du int32 => int64 ?

    Pour le moment je n'ai que ce petit souci, mais en réfléchissant je risque d'être embêté avec le type DateTime, Booléen ...

    Mes propos sont peut être un peu confus, j'adapterais donc mon message selon vos questions et suggestions.

    Merci d'avance de vos réponses.
    -- Se lance dans l'asp.net 2.0 --

    Made In Taïwan

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    269
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 269
    Points : 460
    Points
    460
    Par défaut
    Bonjour,

    Petite info complémentaire :
    - SQLite ne gère pas que le int64, en fait SQLite gère le type Integer qui est codé en fonction de la valeur sur 8, 16, 32, 64 bits.

    J'ai eu le même problème avec SQLCompact a la place de MySQL, j'ai été obligé de maintenir 2 edmx, leurs seul différence c'est le type de la colonne du coté SQL. Le gros point noir de cette méthode c'est que ça oblige à recompiler pour changer de BDD.
    N'utilisant pas CodeFirst, je ne peux pas te guider pour le mapping, mais je suppose que ça doit bien se passer.

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2003
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2003
    Messages : 197
    Points : 115
    Points
    115
    Par défaut
    Je te remercie de ta réponse.

    Je gratterais un peu du côté de sqlite pour voir si je peux passer en int32.

    Sinon concernant code first, je mappe manuellement mon modèle à ma base, donc difficile de maintenir 2 modèles distincts.

    Je vais retenter une expérience similaire avec la base de donnée embarqué fournis par Visual Studio.

    Mon but au final est de pouvoir via le fichier de configuration proposé une application supportant différente base de donnée, les modèles sont uniques et via mon DBContext, je n'ai pas à me préoccuper de la manière dont l'application communique avec la base de donnée.
    -- Se lance dans l'asp.net 2.0 --

    Made In Taïwan

Discussions similaires

  1. [MySQL] Optimisation code requète sql multi conditionnée
    Par mac7474 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 13/08/2009, 09h51
  2. Réponses: 0
    Dernier message: 15/10/2008, 11h46
  3. visibilité du code de connection à la database
    Par bris dans le forum Débuter
    Réponses: 4
    Dernier message: 27/02/2006, 16h10
  4. IB Multi Database Access
    Par tintin22 dans le forum Débuter
    Réponses: 1
    Dernier message: 30/12/2005, 22h50
  5. [MySQL] Connexion multi-database sur le même serveur
    Par brazza dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 27/11/2005, 11h34

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