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

ASP.NET MVC Discussion :

DataAnnotation et Entity Framework DatabaseFirst


Sujet :

ASP.NET MVC

  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 DataAnnotation et Entity Framework DatabaseFirst
    Bonjour à tous,

    Je suis en train de développer une petite application basée sur une base de données déjà existante, donc je fais le mapping directement sur la base (database first) grâce à EF5 et ça me génère donc mes objets Models grâce aux templates T4.
    Jusqu'ici tout va bien et tout fonctionne parfaitement.

    Cependant, lorsque j'ajoute des data annotation à mes models (ex: [Required] etc...) et que je souhaite mettre à jour mes models depuis la bdd, je perds toutes mes modifs (data annotation)...

    Est-ce que quelqun aurait une solution pour ce problème ?
    J'ai bien pensé à faire des classes partial mais je trouve cette solution un peu moche...

    Merci d'avance

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2008
    Messages : 381
    Points : 766
    Points
    766
    Par défaut
    Les modèles sont auto-générés chaque fois que tu mets à jours ton EDMX. Il y a même un commentaire dans l'en-tête qui l'indique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    //------------------------------------------------------------------------------
    // <auto-generated>
    //    This code was generated from a template.
    //
    //    Manual changes to this file may cause unexpected behavior in your application.
    //    Manual changes to this file will be overwritten if the code is regenerated.
    // </auto-generated>
    //------------------------------------------------------------------------------
    De plus, exposer directement ton modèle directement dans ta vue est une très mauvaise idée. Surtout si tu l'exposes dans un formulaire pour le modifier.

    Un article qui montre les faiblesses de cette approche :
    http://odetocode.com/blogs/scott/arc...p-net-mvc.aspx

    Personnellement j'ai adopté la solution Architectural. De cette manière je contrôle à 100% les inputs sans me casser la tête.
    Les fautes d'orthographes sus-citées sont déposées auprès de leurs propriétaires respectifs. Aucune responsabilité n'est engagée sur la lisibilité du message ou les éventuels dommages qu'il peut engendrer.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2013
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2013
    Messages : 39
    Points : 59
    Points
    59
    Par défaut
    Citation Envoyé par same66 Voir le message
    Je suis en train de développer une petite application basée sur une base de données déjà existante, donc je fais le mapping directement sur la base (database first) grâce à EF5 et ça me génère donc mes objets Models grâce aux templates T4.
    Jusqu'ici tout va bien et tout fonctionne parfaitement.

    Cependant, lorsque j'ajoute des data annotation à mes models (ex: [Required] etc...) et que je souhaite mettre à jour mes models depuis la bdd, je perds toutes mes modifs (data annotation)...
    En dehors de la remarque faite par "PatteDePoule", il faut savoir que c'est soit l'un, soit l'autre, pas les deux en même temps. Ce que je veux dire, c'est que si tu as la possibilité et la liberté d'effectuer des modifications sur la base de données, et que tu fasses ces modifications en code, il te faut passer en mode Code First, et arréter d'utiliser le mode Database First.

    Tu peux trés bien faire un reverse engineering pour passer en Code First et régulièrement mettre à jour la base de données avec Migrations: [ame="http://www.youtube.com/watch?v=i7SDd5JcjN4"]Entity Framework 5.0 - Code First Migrations - How to update a database schema Part 2 of 2 - YouTube[/ame]

    Une autre solution, moins radicale, est de créer des classes partielles sur les entités de ton modèle; celles-ci ne seront pas écrasées lors d'un regénération: http://robbincremers.me/2012/01/31/e...ated-entities/

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/08/2008, 10h36
  2. ADO.NET Entity Framework, Astoria, Silverlight -> .NET 3.5 ?
    Par rad_hass dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 08/07/2008, 16h01
  3. version final d'Entity framework
    Par korchimustapha dans le forum Général Dotnet
    Réponses: 8
    Dernier message: 04/07/2008, 17h21
  4. [ADO.NET Entity Framework] génération des tables
    Par anthyme dans le forum Accès aux données
    Réponses: 3
    Dernier message: 22/02/2008, 17h44
  5. Linq - Entity Framework
    Par Jfrancois57 dans le forum Framework .NET
    Réponses: 11
    Dernier message: 12/02/2008, 08h06

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