Entity Frameworkを使用して更新する外部キーフィールドを取得する適切な方法を見つけ出すのに問題があります。私はデータベースではなく、インターフェイス上でそれらを更新するのに問題はありません。ここで Entity Frameworkで通常フィールドとリレーショナルフィールドの両方を更新する
は私の質問 ファイルに関連するテーブルです:/// C:/Users/Mike/Desktop/RelevantTables.bmpI「チーム」マスター/ディテール・タイプのビューでフォームを持っている(マスター= Team、detail = Player)、ListViewにプレーヤーを表示します。プレーヤーをダブルクリックすると、 "Edit Player"フォームが表示されます。ここで
は、私は私の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;
は、これは私がやっているものです:
// 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);
}
私の問題はあります外部キーではないフィールドはすべてListViewの変更を反映しますが、PlayerPositionは反映されません。データベース内で正しく変更されています。毎回データベースを再クエリする必要はありますか?
私はWPFとEFを突き抜け始めたばかりなので、私はこれをすべてうまくやっているという独特の感触を得ています。
誰かが何が起こっているのかを知っているか、私がこの方法でやっていることがどんなに愚かであるか教えて欲しいと思うなら、それは私と一緒です!事前に
おかげで、 マイク
申し訳ありません。これは私の初めてのStackOverflowへの投稿です!また、私はXAMLの{Binding Source}タグを使ってマスタービューとディテールビューにバインドしていることを忘れていました。 – mkgrunder
ビットマップをアップロードできます。 www.tinypic.comを開き、ここにリンクを投稿してください。十分な評判を持つ人が投稿を更新できます:-) –
もちろん、問題ありません。私はビットマップが問題に重要ではないと考えています。関連するedmxテーブルのキャプチャだけです。ここにリンクがあります:http://i31.tinypic.com/2u4mrmd.jpg – mkgrunder