2 votes

MVC et Entity Framework - insertions, mises à jour, meilleures pratiques

Je vais essayer d'être bref et clair avec cette question.

Nous avons une application asp.net mvc qui utilise entity framework 4.

Notre modèle économique est relativement simple : Nous avons un objet (qui correspond à une table) appelé Photo(s). Cette table de photos a une poignée de colonnes qui correspondent aux propriétés de l'objet. Description, titre, date, etc. Elle possède également un certain nombre de colonnes qui font référence à des clés étrangères pour d'autres tables : AuthorId, LicenseId etc...

Les tables d'auteurs et de licences sont complexes en soi, avec des champs multiples (Titre, Résumé, Date, etc.).

J'ai plusieurs clients qui utilisent cette application pour visualiser leurs photos. J'aimerais que chaque client puisse dicter les champs qu'il voit lorsqu'il visualise les photos, ainsi que ceux qu'il voit lorsqu'il modifie ces champs.

J'ai l'intention de configurer des tables indiquant que le client-a doit voir les champs 1, 2 et 3 lorsqu'il consulte ses photos, et que le client-b doit voir les champs 1, 4 et 5. Mais certains de ces champs ne sont pas simplement des colonnes dans la table principale des photos, ils peuvent être des champs dans une table enfant. Ainsi, Field1 pourrait être : Table.Photos.Title -> qui correspond à un objet comme : Objects.Photo.title... mais Field3 pourrait être : Table.Licenses.LicenseSummary -> qui correspond à un objet comme : Objects.Photo.License.LicenseSummary

J'essaie de comprendre la méthodologie que nous utiliserions pour avoir un environnement très axé sur les données, de sorte que dans la base de données, je puisse dire, affichez cet objet/cette propriété (pour l'afficher ou l'éditer) et ensuite il saurait comment se connecter à n'importe quelle table dont il a besoin pour extraire cette information. également, pendant l'édition... donnez-lui un moyen d'extraire une liste de valeurs disponibles si c'est ce type de propriété, et pas seulement un champ de texte.

Je cherche un exemple de ce que cela pourrait impliquer, notre modèle est en fait plus complexe que cela, mais c'est juste une idée de ce que nous essayons d'accomplir. Je ne sais pas si ce que j'essaie de faire est normal, peut-être cela implique-t-il une réflexion ? C'est un domaine nouveau pour moi.

0voto

Robert Harvey Points 103562

Si les clients définissent leurs propres champs personnalisés, je leur donnerais simplement un tableau de paires clé/valeur.

PhotoID    FK
Key        string
Value      string
Display    bool

Notez que cela revient essentiellement à VAE ce qui entraîne son lot de difficultés.

S'il ne s'agit que d'autorisations sur des champs existants, vous devez saisir ces informations :

PhotoID    FK
ClientID   FK
FieldName  string
Display    Bool

Vous pouvez utiliser cette information pour inhiber l'affichage des champs dans la vue. La manière la plus simple de le faire serait d'utiliser une boucle dans la vue elle-même, en écrivant le champ sur la sortie seulement si Display est réglé sur true .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X