【发布时间】:2016-06-03 19:24:17
【问题描述】:
在 ef6 中,使用 bindingnavigator 和 bindingsource 创建了一个 master detail Winforms。
我能够检索和更新或将子行添加到现有行,但是当我从屏幕添加新的主记录和子记录时,它只会更新主记录。子记录消失。还注意到,当我更改任何主详细信息时,子记录会消失。
如果我从后端添加一个子行,那么我可以从屏幕编辑和添加新的子行。
我认为问题可能是由于缺少新记录的外键,Entity Framework 会将主键作为外键移交给详细信息,还是需要设置任何值?
加载数据和数据绑定的代码:
//
_context.Purchases.Include("PurchaseItems").Load();
purchaseBindingSource.DataSource = _context.Purchases.Local.ToBindingList();
//
purchaseItemsBindingSource.DataMember = "PurchaseItems";
purchaseItemsBindingSource.DataSource = this.purchaseBindingSource;
型号:
//
public class Purchase
{
public Purchase()
{
}
public int ID { get; set; }
public string PurchaseBillNo { get; set; }
public DateTime PurchaseDate { get; set; }
public decimal OtherExpenses { get; set; }
public decimal TotalBillAmount { get; set; }
public ObservableListSource<PurchaseItem> PurchaseItems { get; set; }
}
public class PurchaseItem
{
public PurchaseItem()
{
}
public int ID { get; set; }
[Required]
public virtual Purchase Purchase { get; set; }
[Required]
public virtual Product Product { get; set; }
public decimal PurchasePrice { get; set; }
public decimal Quantity { get; set; }
public decimal Amount { get; set; }
}
【问题讨论】:
-
这取决于代码和数据绑定设置。您应该发布模型代码以及如何加载数据以及如何绑定 datagridviews 和 bindingsources。
-
已更新代码详情
-
也添加
Purchase的代码。 -
Purchase 和 PurchaseItems 模型更新
标签: c# winforms entity-framework