2016-04-11 43 views
3

我正在使用實體框架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(); 

最後我會在數據網格中顯示數據。不幸的是,任何外鍵數據將無法正確顯示,如圖所示。

Datagrid Example

我怎麼能顯示RemarkText從數據網格的RemarkNavigation

+0

你有沒有嘗試'包括()'子句像'db.Complaints.Include(x => x.RemarkNavigation)'? – TheVillageIdiot

+0

@TheVillageIdiot我試過了,看到我的答案。 –

+0

好,你想通了。但是,如果你已經發布了網格的標記,有人可能會提前想到它。 – TheVillageIdiot

回答

0

我想出瞭如何顯示我的數據。我將AutoGenerateColumns設爲false。然後我明確地創建了這樣的列。

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

從它AutoGenerateColumns看起來不會產生多個層次下降值。

相關問題