c# - 从两个表中检索数据并填充 DataGrid 实体框架
问题描述
我正在使用实体框架。我的数据库客户和发票中有 2 个表。发票表有一列 CustomerID 作为外键来引用客户。
我正在使用DataGrid
具有以下列的,如图所示。
这DataGrid
应该显示发票表中的数据和客户表中的客户名称。请帮我如何查询这个?
数据网格
<DataGrid IsReadOnly="False" Margin="0 10 0 0" Background="white" Name="InvoiceGrid" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Invoice ID" IsReadOnly="True" MinWidth="100"/>
<DataGridTextColumn Header="Date" IsReadOnly="True" MinWidth="100" />
<DataGridTextColumn Header="Customer" IsReadOnly="True" MinWidth="250" />
<DataGridTextColumn Header="Quantity" IsReadOnly="True" MinWidth="80" />
<materialDesign:MaterialDataGridTextColumn IsReadOnly="True" Header="Total" MinWidth="150" />
上下文类
public partial class Intelliventory_DBEntities : DbContext
{
public Intelliventory_DBEntities()
: base("name=Intelliventory_DBEntities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public virtual DbSet<Category> Categories { get; set; }
public virtual DbSet<Customer> Customers { get; set; }
public virtual DbSet<Employee> Employees { get; set; }
public virtual DbSet<Invoice> Invoices { get; set; }
public virtual DbSet<InvoiceItem> InvoiceItems { get; set; }
public virtual DbSet<Product> Products { get; set; }
public virtual DbSet<Purchase> Purchases { get; set; }
public virtual DbSet<Supplier> Suppliers { get; set; }
public virtual DbSet<sysdiagram> sysdiagrams { get; set; }
}
解决方案
如果Customer
是 的导航属性Invoice
,您可以使用急切加载来加载它,例如:
var context = new Intelliventory_DBEntities();
InvoiceGrid.ItemsSource = context.Invoices.Include(x => x.Customer).ToList();
//...
context.Dispose();
然后,您可以将该列绑定到导航属性:
<DataGridTextColumn Header="Invoice ID" Binding="{Binding InvoiceID}" IsReadOnly="True" MinWidth="100"/>
<DataGridTextColumn Header="Date" Binding="{Binding Date}" IsReadOnly="True" MinWidth="100" />
<DataGridTextColumn Header="Customer" Binding="{Binding Customer.CustomerName}" IsReadOnly="True" MinWidth="250" />
推荐阅读
- docker - 我可以在托管 Kubuntu 20 时显示 docker 的混合成功/错误通知吗?
- qt - 鼠标悬停时更改拆分器的背景颜色
- node.js - 运行笑话测试时出错 - 无法读取 runtime.json
- reactjs - 无法使用自定义 Material UI 主题
- django - Django Table前向填充缺失值
- amazon-web-services - 无需 AWS Incognito 即可使用公有/私有访问进行 Appsync 身份验证
- qt - QJSEngine 全局函数
- google-cloud-firestore - 如果我只在 firestore 数据库的多个字段中更新文档的单个字段,“request.resource.data”将包含什么?
- python - 如何检测输入的字符串是否在列表中以及是否重复?
- facebook - 多域名即时文章