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 :

Rendre une propriété abstraite


Sujet :

Entity Framework

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 265
    Par défaut Rendre une propriété abstraite
    Bonjour,

    Je débute en ASP.NET MV2 avec Entity Framework en suivant le tutoriel NerDinner et j'ai une question concernant les repositories qui y sont décrits : est-il possible de créer une classe de base pour ces repositories donc chacun hériterait ?

    Concrètement, j'aimerais pouvoir abstraire l'entité considérée de manière à ne pas avoir à recopier toujours les mêmes méthodes. J'ai actuellement :
    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
    public class NewsRepository
        {
            private FWAEntities entities = new FWAEntities();
     
            public IQueryable<News> GetAll()
            {
                return entities.News;
            }
     
            public News GetById(int id)
            {
                return entities.News.FirstOrDefault(n => n.NewsID == id);
            }
     
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class PagesRepository
        {
            private FWAEntities entities = new FWAEntities();
     
            public IQueryable<Page> GetAll()
            {
                return entities.Pages;
            }
     
            public Page GetById(int id)
            {
                return entities.Pages.FirstOrDefault(p => p.PageID == id);
            }
    ...
    Et j'aimerais pouvoir faire ce genre de chose, mais j'ignore comment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class BaseRepository
        {
            private FWAEntities entities = new FWAEntities();
     
            public IQueryable<Ts> GetAll()
            {
                return entities.Ts;
            }
     
            public T GetById(int id)
            {
                return entities.Ts.FirstOrDefault(e => e.TID == id);
            }
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class PagesRepository : BaseRepository
        {
            T = Page;
            Ts = Pages;
    ...
    Est-ce possible en .NET ?

    Merci de votre aide.

  2. #2
    Membre Expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Par défaut
    Oui, il y a la notion d'heritage en EF.

    Voir le tutorial :
    http://pmusso.developpez.com/tutorie...uction/#L2.1.1

    Un livre que j'aime assez sur EF :
    Entity Framework 4.0 Recipes: A Problem-Solution Approach (Apress)
    http://apress.com/book/view/1430227036

    Il donne pas mal de trucs et astuces.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 265
    Par défaut
    Merci j'avais pensé à faire un héritage au niveau des tables mais c'est vraiment au niveau du repository que j'en ai besoin.
    Du coup n'ayant que 3 repositories pour mon projet j'ai fait du copier-coller, pas vraiment "DRY" mais au moins ça marche.

  4. #4
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut
    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
    class A : Entity { }
    class B : A { }
    class C : A { }
     
    class Repository<T> where T : Entity { }
     
    class ARepositoryBase<T> : Repository<T> where T : A
    {
    //All A,B,C classes generic code
    }
     
    class ARepository : ARepositoryBase<A>
    {
    //A class specific code
    }
     
    class BRepository : ARepositoryBase<B>
    {
    //B class specific code
    }
     
    class CRepository : ARepositoryBase<C>
    {
    //C class specific code
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XSD] définition d'une propriété abstraite
    Par jyerfr dans le forum Valider
    Réponses: 1
    Dernier message: 22/02/2008, 14h39
  2. Rendre une propriété visible dans VS2005
    Par frochard dans le forum ASP.NET
    Réponses: 2
    Dernier message: 25/10/2007, 15h20
  3. rendre globale la valeur d'une propriété..
    Par islamune9 dans le forum VB.NET
    Réponses: 10
    Dernier message: 10/05/2007, 23h56
  4. Récupération valeur d'une propriété type TStrings
    Par Stéphane Vaillant dans le forum Langage
    Réponses: 2
    Dernier message: 01/03/2003, 12h47
  5. [ActiveX] Visibilité d'une propriété
    Par paradise dans le forum Composants VCL
    Réponses: 2
    Dernier message: 14/11/2002, 19h33

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