2017-11-30 21 views
0

[OK] ...私は自分自身を教えることを通じて自分のやり方を混乱させ続ける...ここに私の最新の質問があります。ハ!次のように私はMVVMを使用してWPFアプリケーションの3つの異なるサンプルMySQLのテーブルを持っている:WPF MVVM ObservableCollection/DataGrid複数のSQLテーブル

ブッキング

Booking_ID_Num | Book_Type_Num | Fac_ID_Num | 
---------------|---------------|------------| 
     1  |  1  |  2  | 
     2  |  2  |  3  | 
     3  |  1  |  1  | 

BOOKING_TYPES

Book_Type_Num | Book_Type | 
--------------|------------| 
     1  | Full Time | 
     2  | Singe Case | 

施設

Fac_ID_Num | Facility_Name | 
-----------|---------------| 
    1  | Joe's Shop | 
    2  | MedRX  | 
    3  | Grocery Story | 

私はこれをできるだけ簡潔に説明しようと思っています。批判することは自由です。私はObservableCollectionを記入し、そのObservableCollectionをDataGridに渡したいと思います。モデルクラスを通してObservableCollectionを埋める方法はわかっていますが、複数の表をどのように埋めるのか分かりません。

Booking_ID_Num | Book_Type_Num | Book_Type | Fac_ID_Num | Facility_Name | 
---------------|---------------|-------------|------------|---------------| 
     1  |  1  | Full Time |  2  |  MedRx  | 
     2  |  2  | Single Case |  3  | Grocery Store | 
     3  |  1  | Full Time |  1  | Joe's Shop | 

基本的に、私が作ることなく、最終溶液中Book_TypeとFacility_Nameを使用する:この例では、私はViewModelにで観察コレクションは次のように構成されているデータグリッドに渡されていたいです新しい "ビュー"などを作成するようなMySQLデータベースの調整。それは理にかなっていますか?このサイトは、私が学ぶのを助けてくれてすばらしいものでした。このあいまいな質問の助けがあれば大いに感謝します。どうもありがとうございます!

答えて

1

データベース内のデータとDataGridのデータを表す別のクラスを作成します。例えば

ViewDataはあなたDataGridに結合したクラスになりながら、上記の例で

public class Booking 
{ 
    public int BookingIDNum { get; set; } 
    public int BookTypeNum { get; set; } 
    public int FacIDNum { get; set; } 
} 

public class BookingType 
{ 
    public int BookTypeNum { get; set; } 
    public string BookType { get; set; } 
} 

public class Facility 
{ 
    public int FacIDNum { get; set; } 
    public string FacilityName { get; set; } 
} 

public class ViewData 
{ 
    public int BookingIDNum { get; set; } 
    public int BookTypeNum { get; set; } 
    public string BookType { get; set; } 
    public int FacIDNum { get; set; } 
    public string FacilityName { get; set; } 

    public static ViewData From(Booking booking, BookingType bookingType, Facility facility) 
    { 
     return new ViewData 
     { 
      BookingIDNum = booking.BookingIDNum, 
      BookingTypeNum = booking.BookingTypeNum, 
      FacIDNum = booking.FacIDNum, 
      BookType = bookingType.BookType, 
      FacilityName = facility.FacilityName 
     }; 
    } 
} 

、クラスBookingBookingType、およびFacilityは、データベース内のデータを表します。

+0

それはやや意味がある。では、データベースから各プロパティをどのように埋めるのですか? MySQLデータのプルメソッドを各プロパティの「セット」に入れるのですか、ViewDataクラスで使用できる「foreach」メソッドのようなものがありますか?私は私の無知を謝ります。学ぼうとしている。 – Progolfer79

+0

編集された回答を参照してください。 ViewData.Fromメソッド。それはあなたの質問に答えますか? –

+0

申し訳ありません...私はとても混乱しており、これを考える上で... MySQLデータベースのデータをModelクラスの "Bookings"、 "BookingType"、 "Facility"にどうやって取得しますか?モデルクラスは何の機能も持たないと思った。いいえ?そうでない場合は、MySQLデータを "ViewData"クラスにどのように取得するのですか?最後に、どのようにすべての異なるプロパティが互いに関連するので、私は3つまたは4つの異なるセットのリスト/コレクションを列に残さない。 IE:Fac_ID_Numが1のときは、 "ジョーのショップ"であり、ファシリティ名の3番目の値だけではない? – Progolfer79