2016-04-11 18 views
3

コードを最初に使用してEntity Framework 6を​​使用しています。以下のコードは私が作業しているエンティティクラスの単純化されたバージョンです。外部キーデータをデータグリッドに表示する方法

public class Complaint 
{ 
    public int ComplaintId { get; set; } 
    public int RemarkId { get; set; } 
    public string ComplaintName { get; set; } 

    public virtual Remark RemarkNavigation { get; set; } 
} 

public class Remark 
{ 
    public int RemarkId { get; set; } 
    public string RemarkText { get; set; } 

    public virtual ICollection<Complaint> ComplaintsReverseNavigation { get; set; } 
} 

次は、Linqでデータベースにクエリを行います。

var complaints = db.Complaints 
    .Where(x => x.ComplaintId == 1) 
    .DefaultIfEmpty() 
    .ToList(); 

次に、変更方法を追跡するために、延長方法ToBindingList()を使用します。そうですね...

var complaintsBindingList = db.Complaints.Local.ToBindingList(); 

最後に、データグリッドにデータを表示します。残念ながら、この画像のように外部キーのデータは正しく表示されません。その後、私はデータグリッドにRemarkNavigationからRemarkTextを表示することができますどのように

Datagrid Example

+0

'db.Complaints.Include(x => x.RemarkNavigation)'のような 'Include()'節を試したことがありますか? – TheVillageIdiot

+0

@ TheVillageIdiot私はそれを試みました、私の答えを参照してください。 –

+0

あなたは分かりました。しかし、あなたがグリッドのためのマークアップを投稿していたなら、誰かがそれを早く見つけたかもしれません。 – TheVillageIdiot

答えて

0

データの表示方法を理解しました。私はAutoGenerateColumnsを偽にしました。それから私は明示的に列を作成しました。 AutoGenerateColumnsその様子から

<DataGrid ItemsSource="{Binding DataSource}"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="TestColumn" Binding="{Binding RemarkNavigation.RemarkText}"/> 
    </DataGrid.Columns> 
</DataGrid> 

は、複数のレベルダウンしている値を生成しません。

関連する問題