J'ai un problème pour trouver la bonne façon de mettre à jour les champs clés étrangers en utilisant Entity Framework. Je n'ai pas de problème à les mettre à jour dans la base de données, mais plutôt sur l'interface.Obtention d'Entity Framework pour mettre à jour les champs normaux et relationnels
Voici les tableaux pertinents à ma question file: /// C: /Users/Mike/Desktop/RelevantTables.bmp
J'ai une forme "équipe" avec une vue de type maître/détail (maître = Team, detail = Player), et montre les joueurs dans un ListView. Lorsque vous double-cliquez sur un joueur, je montre le formulaire "Edit Player".
Voici comment je charge les données dans mon cas TeamForm Window_Loaded:
var TeamQuery = from t in ScoresDB.Team
.Include("School").Include("TeamLevel").Include("Player.PlayerPosition")
.Where(x => x.TeamID == TeamID)
select t;
TeamData = new TeamCollection(TeamQuery, ScoresDB);
TeamViewSource = (CollectionViewSource)FindResource("TeamViewSource");
PlayerViewSource = (CollectionViewSource)FindResource("PlayerViewSource");
TeamViewSource.Source = TeamData;
TeamView = (ListCollectionView)TeamViewSource.View;
TeamView.CurrentChanged += new EventHandler(TeamView_CurrentChanged);
PlayerView = (BindingListCollectionView)PlayerViewSource.View;
C'est ce que je fais lorsque l'utilisateur souhaite modifier un joueur:
// If the user made changes to the player, then refresh our view
if (PlayerForm.EditPlayer(SelectedPlayer.PlayerID)) {
ScoresDB.Refresh(System.Data.Objects.RefreshMode.ClientWins, PlayerView);
}
Mon problème est Bien que chaque champ qui n'est pas une clé étrangère reflète les changements dans ListView, ce n'est pas le cas de PlayerPosition. Il est correctement changé dans la base de données. Ai-je besoin de réexaminer la base de données à chaque fois? J'ai le sentiment que je fais tout cela assez mal car je commence à peine à traverser WPF et EF.
Si quelqu'un a une idée de ce qui se passe ou souhaite simplement me dire à quel point je suis stupide de le faire de cette façon, c'est bien pour moi!
Merci à l'avance, Mike
Désolé pour la référence à mon bitmap. C'est ma première fois sur StackOverflow! J'ai également oublié de mentionner que je suis lié aux vues Master et Detail en utilisant les balises {Binding Source} dans mon XAML. – mkgrunder
Vous pouvez télécharger votre bitmap, par exemple. www.tinypic.com et ensuite poster le lien ici - quelqu'un avec assez de réputation peut alors mettre à jour votre message :-) –
Bien sûr, pas de problème. Je ne pense pas que le bitmap est critique à la question, juste une capture des tables d'edmx appropriées. Voici le lien: http://i31.tinypic.com/2u4mrmd.jpg – mkgrunder