none
MVC EF Database First : génération des classes

    Question

  • Bonjour tout le monde,

    Désolé, j'ai une question pas très originale. Je me suis mis à MVC EF Database First, tant qu'il s'agit d'aller jusqu'à la gestion d'une table ça baigne.

    Là où ça se gâte, c'est quand il s'agit d'accéder aux autres tables avec Linq to SQL, là on a besoin des classes qui représentent la structure des données. J'ai vu un jour qu'on pouvait faire ça, et puis maintenant que je veux le faire ce n'est pas si évident.

    Ici je lis :

    "Remember to save your Entity Data Model after making a modification by clicking the Save button (the icon of the floppy disk). Behind the scenes, the Entity Designer generates a set of C# classes. You can view these classes by opening the MoviesDBModel.Designer.cs file from the Solution Explorer window."

    Donc, je comprends qu'arrivé à ce stade, je devrais pouvoir appeler les objets dans Linq, et ... ça n'a pas l'air si opérationnel que ça.

    Dans Model1.Designer.cs, j'ai bien la structure des données qui est représentée, avec plein d'attributs et de fonctions de gestion, mais alors que j'ai coché la case pour mettre au singulier/au pluriel selon les cas, je ne retrouve pas les objets voulus là où j'en ai besoin.

    Je suis parti de la base d'authentification créée par le AccountControler du modèle Application web MVC4 Visual C#, pour accès depuis Internet (donc avec authentification de type Forms). Je l'ai ouverte depuis un autre projet pour y voir plus clair.

    Le but est de réaliser une interface pour que l'administrateur puisse affecter des rôles aux utilisateurs.

    J'ai donc créé un modèle avec UserProfile, webpages_Role, et webpages_UsersInRoles. A partir de là j'ai pu créer trois contrôleurs, un pour gérer chacune des trois tables.

    Pour créer les associations, plutôt qu'une page avec deux zones numériques de l'éditeur par défaut de UsersInRoles, je verrais bien mettre sur les pages création/édition de UserProfile et webpages_Role, une liste déroulante qui propose les enregistrements de l'autre table, pour alimenter le champ correspondant.

    Pour initialiser cette liste déroulante, il faut avoir accès à la table avec Linq. Or, si j'ai un objet webpages_roles, je n'ai pas le singulier qui me permet d'accéder aux champs d'un élément.

    Est-ce que je suis en train de me noyer dans un verre d'eau ?

    Autre approche, j'ai vu une application toute prête pour générer les classes, c'est la source qui est mise à disposition, mais comme elle est basée sur plusieurs projets, j'ai l'impression que ce n'est pas la peine que je demande à mon Visual Web Developer Express de la compiler.

    Sinon j'aurais aussi la solution de les écrire à la main, ça m'aurait pris moins de temps que de poser la question. Mais enfin ça fait partie des spécificités d'Entity Framework, alors autant savoir faire.



    mercredi 14 décembre 2016 17:50