使用 Linq 读取数据库记录并通过外键显示在 DataGrid 上

Read DB records with Linq and show on DataGrid by foreign key

我有两个 类:FactorFactorItems。我还有三个Windows:Win1Win2WinReadWin1 包含一个名为 grd1 的 DataGrid; Win2 包含一个名为 grdItems 的 DataGrid,WinRead 包含一个名为 grdRead.

的 DataGrid

FactorItems 上有一个来自 Factor 的外键。 我使用 SaveChanges() 方法并将数据从 Win2 grdItems 插入到 table。此外,我可以读取和显示 grd1 中的 Factor's table 条记录,所有内容都是正确的。

现在我想要当我在 grd1 行(例如,使用 Id == 50)上单击(我使用 DataGridCellChanges)时,它应该加载 WinRead 并显示所有 FactorItems 的外键都是 Factor_Id 50 on WinRead_Load grdRead.

系数

public class Factor
{
    public Factor()
    {
        this.BuyList = new List<FactorItems>();
    }

    public Int64 Id { get; set; }
    public virtual ICollection<FactorItems> BuyList { get; set; }
}

因素项

public class FactorItems
{
    public Int64 Id { get; set; }
    public string ProductName `enter code here`{ get; set; }
    public int NumberInBox { get; set; }
    public decimal TotalNumber { get; set; }

    public virtual Factor Factors{ get; set; }
}

Win1

private void grd1_SelectedCellsChanged(objectsender,SelectedCellsChangedEventArgs e)
{
    WinRead wread = new WinRead
    if (grd1.SelectedItems.Count > 0)
    {
        wread.ShowDialog();
    }
}

WinRead

private void grdRead_Loaded(object sender, RoutedEventArgs e)
{
    using (var ctx = new EntContext())
    {
        //What do I write here?
    }
}
Factor row = dataGridPrincipal.SelectedItem as Factor;

现在你将拥有选定的对象

WinRead wread = new WinRead
if (grd1.SelectedItems.Count > 0)
{
    wread.grid.itemsource= ctx.Factor.BuyList.where(x=>x.Id==row.forignkey).Tolist()
    wread.ShowDialog(); 
}

WinRead 中创建 prop 并在那里保存外键,在加载事件中,你可以加载