私はWPFアプリケーションを作成しており、ユーザーが(リポジトリパターンも使用して)CRUD
操作を使用して詳細を入力できるようにしています。Entity Framework
ここまでで、ユーザーがプロスペクトクライアントに入ることができるアプリケーションを作成しました。この見込み客を編集し、新しい見込み客を追加し、簡単に削除できます。
ただし、この見込み客は、 ProspectMeetingForeign Key
と呼ばれる別のテーブル内にリレーションを持ち、Prospectテーブルからを取得します。ProspectID
Select
ただし、ProspectからProspectを取得すると、選択したProspectListView
のデータが表示されません。
下の画像は、現在の状態のアプリケーションの画像です。これにより、私が達成したいことをよりよく理解できることを願っています。
私のリポジトリでは、これを使用してList
、ProspectIDを使用して ProspectMeetings を取得します。
public List<ProspectMeeting> GetMeetingByProspect(int _ProspectID)
{
using (var context = new DBEntities())
{
return context.Prospects.First(i => i.ProspectID == _ProspectID).ProspectMeetings.ToList();
}
}
私のProspectViewModelでは、これを使用してProspectMeetingViewModelObservable Collection
からデータを取得します。
private ObservableCollection<ProspectMeetingViewModel> prospectMeetings = null;
public ObservableCollection<ProspectMeetingViewModel> ProspectMeetings
{
get { return GetProspectMeetings(); }
set
{
prospectMeetings = value;
OnPropertyChanged("ProspectMeetings");
}
}
internal ObservableCollection<ProspectMeetingViewModel> GetProspectMeetings()
{
ProspectMeetingRepository c = new ProspectMeetingRepository();
prospectMeetings = new ObservableCollection<ProspectMeetingViewModel>();
prospectMeetings.Clear();
foreach (DataObjects.ProspectMeeting i in c.GetMeetingByProspect(this.ProspectID))
{
ProspectMeetingViewModel prospectMeeting = new ProspectMeetingViewModel(i);
prospectMeeting.Prospect = this;
prospectMeetings.Add(prospectMeeting);
}
return prospectMeetings;
}
そして私のProspectListViewModelで;
private ProspectListViewModel() : base("")
{
this.ProspectList = GetProspects();
}
private ProspectViewModel selectedProspect = null;
public ProspectViewModel SelectedProspect
{
get
{
return selectedProspect;
}
set
{
selectedProspect = value;
OnPropertyChanged("SelectedProspect");
}
}
private ObservableCollection<ProspectViewModel> prospectList = null;
public ObservableCollection<ProspectViewModel> ProspectList
{
get
{
return GetProspects();
}
set
{
prospectList = value;
OnPropertyChanged("ProspectList");
}
}
internal ObservableCollection<ProspectViewModel> GetProspects()
{
if (prospectList == null)
prospectList = new ObservableCollection<ProspectViewModel>();
prospectList.Clear();
foreach (DataObjects.Prospect i in new ProspectRepository().GetAll())
{
ProspectViewModel c = new ProspectViewModel(i);
prospectList.Add(c);
}
return prospectList;
}
私はこのリンクをたどって私を助けてきましたが、行き詰まりました。個人的には、自分のコードを見ると、リポジトリがデータを取得していないことに関係があると思います。しかし、よくわかりません。
誰かが私や私にアドバイスしたり、この問題について助けてくれることを願っています. まず、これが長い質問である場合は申し訳ありません。次に、さらにコードを追加する必要がある場合は、お知らせください。適切だと思うデータのみを追加しました。
前もって感謝します :)。