J'ai de la difficulté à comprendre à un niveau fondamental comment une relation un-à-plusieurs doit être gérée dans Entity Framework. Dans ma demande, j'ai deux tables, DISPLAY_MASTER
, et DISPLAY_ITEMS
. Leur relation est comme ceci:Comment gérer une relation un à plusieurs dans Entity Framework?
DISPLAY_MASTER.DISPLAY_ID 1 -----> * DISPLAY_ITEMS.DISPLAY_ID
Entity Framework organise ce vraiment intuitive. Je suis parti avec un objet DISPLAY_MASTER
fortement typé qui a une propriété ICollection
appelée DISPLAY_ITEMS
.
Ma confusion réside dans la façon de sauvegarder la collection DISPLAY_ITEMS
dans la base de données. Dans mon application, je lis dans tous les DISPLAY_ITEMS
pour le particulier DISPLAY_MASTER
en utilisant LINQ dans un objet List<DISPLAY_ITEMS>
appelé _displayItems
. Ceci est ensuite lié à DataGrid
pour l'édition à l'aide de MVVM. L'utilisateur peut modifier DISPLAY_ITEMS
existant, supprimer DISPLAY_ITEMS
existant, ou ajouter DISPLAY_ITEMS
en utilisant le DataGrid
. Ma liaison fonctionne parfaitement et ces changements sont reflétés dans _displayItems
. Une fois qu'il est temps d'enregistrer, c'est là que j'arrête de me sentir confiant dans mon code. Lorsque l'utilisateur clique enregistrer Je suis en train de la DISPLAY_MASTER
est ICollection
comme ceci:
_displayMaster.DISPLAY_ITEMS = _displayItems;
Est-ce la bonne façon de travailler sur une collection Entity Framework? Ou devrais-je lier le DataGrid
directement à l'objet _displayMaster.DISPLAY_ITEMS
? Ou une autre méthode? La raison pour laquelle je ne suis pas sûr parce que si je tente de valider l'entité _displayMaster.DISPLAY_ITEMS
utilisant:
DbEntityValidationResult validationResults = _context.Entry(_displayMaster.DISPLAY_ITEMS).GetValidationResult();
Je reçois une erreur disant « List1 » ne fait pas partie de la collection, qui évidemment ne semble pas juste.
Des conseils ou des instructions seraient les bienvenus.
Merci.
J'ai la deuxième option, mais je suis incapable de lier directement à l'entité car elle est du type 'ICollection'. Quand je vais éditer l'enregistrement dans 'DataGrid', j'obtiens une erreur disant 'EditItem' n'est pas disponible. Est-ce que j'ai râté quelque chose? –
@ user3043546: Je suggère que vous posiez une question distincte au sujet de ce problème de suivi. Cela ressemble plus à un sujet de liaison WPF qu'à un problème EF. Je ne peux pas vous aider ici, je ne suis pas assez familier avec WPF. – Slauma
Merci pour vos commentaires, vous avez raison. En passant, j'ai fait plus de recherches et votre deuxième solution était la voie à suivre. –