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

 .NET Discussion :

Comment utiliser Entity Framework ?


Sujet :

.NET

  1. #1
    Membre habitué
    Inscrit en
    Décembre 2010
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 92
    Points : 129
    Points
    129
    Par défaut Comment utiliser Entity Framework ?
    Bonjour à tous,

    j'ai un soucis qui me semble plutôt important.
    Je situe le contexte :
    Développement d'une application webform en n-tier et avec ADO.net, donc on utilise Entity Framework.

    Pour le requétage à la base de données, tout passe par des procédures stockées (et un peu de linq parfois), et donc, jusqu'à présent, pour pouvoir travailler nos objets en sortie de requête on faisait un cast vers un type qu'on définissait nous même (des datacontracts).

    Je vais vous montrer mon code, ce sera plus parlant :

    Dans mon fichier, j'ai :

    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
    public static UserInfo GetUserInfos(int userId)
            {
                using (var container = new UserEntityContainer())
                {
                    return container.GetInfosResponsable(userId).Select(ToUserInfo).FirstOrDefault();
                }
            }
     
    puis 
     
    public static UserInfo ToUserInfo(GetInfosResponsable_Result userInfo)
            {
                if (userInfo == null)
                {
                    return null;
                }
     
                return new UserInfo
                {
                    userAdress = userInfo.act_adr1,
                    userVille = userInfo.act_ville,
                    userEmail = userInfo.act_email
                };
            }
    et le type retourné c'est donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class UserInfo
        {
            public int userId { get; set; }
            public string userAdress { get; set; }
        ...
         }
    Donc quand jusque là, tout va bien, je transforme une entité sql en mon objet pour le travailler comme je veux.
    Mais maintenant je commence à avoir des données croisées, et là je me demande comment faire...

    Par exemple, je peux recevoir d'une procédure stockée, les infos d'un utilisateur avec son statut, et le nom de sa voiture etc...
    En gros, je ne peux pas faire un datacontract par entité sql que je reçois depuis une procédure stockée... et je me doute bien que mon système est complètement foireux, mais j'ai repris l'existant et finalement, ça sent la refonte...

    Peut être auriez vous des idées ? Ou au moins m'indiquer les bonnes pratiques ?
    Comment vous faites vous pour utiliser les retours d'entité ?

    Vous auriez des liens ? des bonnes pratiques ?

    Merci par avance

    Julien

  2. #2
    Membre chevronné Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Points : 2 227
    Points
    2 227
    Par défaut
    Avec Entity Framework, si tu ajoutes ta procédure stockée à ton modèle, tu peux créer un type de retour spécifique (type "complexe") à ta procédure, qui ne soit donc pas un objet métier.
    Après, libre à toi de passer par un wrapper pour faire le mapping avec tes autres objets. Cela dépend de l'utilisation que tu veux faire de l'objet retourné par la procédure stockée.

    Cela répond à ta problématique?
    One minute was enough, Tyler said, a person had to work hard for it, but a minute of perfection was worth the effort. A moment was the most you could ever expect from perfection.

    -- Chuck Palahniuk, Fight Club, Chapter 3 --

  3. #3
    Membre habitué
    Inscrit en
    Décembre 2010
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 92
    Points : 129
    Points
    129
    Par défaut
    Hello,

    Oui merci beaucoup pour cette réponse, mais en fait, je me demandais si ce n'était pas une mauvaise chose d'utiliser directement le type complexe ?

    En fait, je suis débutant et encore plus avec EF, c'est pourquoi je vous demande des conseils, car je n'ai pas envie de partir sur des mauvaises pratiques et dans quelques semaines ou mois devoir tout refaire car je m'apercevrais que je suis parti sur un truc pas correct du tout.

    Donc on peut utiliser les types complexe sans soucis ? Ca ne pose pas de problème de conception ?

    Merci par avance

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par same66 Voir le message
    Donc on peut utiliser les types complexe sans soucis ? Ca ne pose pas de problème de conception ?
    Non... En tout cas pas à ma connaissance. Peux-tu nous citer quels genres de problème tu aurais peur ? Comme ça on verra si ça peut se poser dans l'utilisation des types complexes.

Discussions similaires

  1. Réponses: 0
    Dernier message: 16/07/2013, 15h12
  2. Firemonkeys : Comment utiliser les Frameworks OSX
    Par sinfoni dans le forum Composants FMX
    Réponses: 3
    Dernier message: 07/03/2012, 18h58
  3. Réponses: 0
    Dernier message: 17/01/2009, 21h06
  4. Réponses: 0
    Dernier message: 30/08/2008, 04h18
  5. [Framework]Comment Forcer l'utilisation du Framework 1.1
    Par michel71 dans le forum Framework .NET
    Réponses: 1
    Dernier message: 11/12/2006, 21h11

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