Précédent   Forum du club des développeurs et IT Pro > Dotnet > Accès aux données > Entity Framework
Entity Framework Forum d'entraide sur le développement avec le modèle d'accès aux données Entity Framework de Microsoft.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 10/07/2012, 17h59   #1
hirochirak
Membre régulier
 
Homme
Développeur .NET
Inscription : juillet 2003
Messages : 188
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur .NET

Informations forums :
Inscription : juillet 2003
Messages : 188
Points : 78
Points : 78
Envoyer un message via MSN à hirochirak
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
hirochirak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2012, 09h19   #2
antoine.debyser
Membre éprouvé
 
Homme
Ingénieur développement logiciels
Inscription : mars 2011
Messages : 258
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 : 258
Points : 418
Points : 418
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.
antoine.debyser est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2012, 13h40   #3
hirochirak
Membre régulier
 
Homme
Développeur .NET
Inscription : juillet 2003
Messages : 188
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur .NET

Informations forums :
Inscription : juillet 2003
Messages : 188
Points : 78
Points : 78
Envoyer un message via MSN à hirochirak
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
hirochirak est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 01h45.


 
 
 
 
Partenaires

Hébergement Web