+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  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 : 33
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : juillet 2003
    Messages : 197
    Points : 82
    Points
    82

    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 :
    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 :
    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 éprouvé
    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 : 459
    Points
    459

    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 : 33
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : juillet 2003
    Messages : 197
    Points : 82
    Points
    82

    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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •