【问题标题】:How can I display foreign key data in a datagrid如何在数据网格中显示外键数据
【发布时间】:2016-08-01 02:37:25
【问题描述】:

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

最后,我将在数据网格中显示数据。不幸的是,任何外键数据都无法正确显示,如图所示。

那么我如何在数据网格中显示来自RemarkNavigationRemarkText

【问题讨论】:

  • 您是否尝试过使用Include() 子句,例如db.Complaints.Include(x=&gt;x.RemarkNavigation)
  • @TheVillageIdiot 我试过了,看看我的回答。
  • 好你想通了。但是,如果您为网格发布了标记,那么有人可能会更早地发现它。

标签: c# entity-framework linq


【解决方案1】:

我想出了如何显示我的数据。我将AutoGenerateColumns 转为假。然后我像这样明确地创建了列。

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

从外观上看,AutoGenerateColumns 不会生成向下多级的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-28
    • 2013-03-08
    • 2022-01-08
    • 1970-01-01
    • 2013-02-04
    • 1970-01-01
    • 2015-10-16
    • 2020-11-28
    相关资源
    最近更新 更多