我的问题:我有一个列表对象,我想保留到 sql server,当我在实体框架上调用 .SaveChanges() 时,它会失败,因为上下文中的某些对象无效。
我的问题:我如何只保留有效的更改?我将处理 UI 通知客户那些无效的。
我正在使用 VSTO Excel 工作簿项目,并且正在尝试管理 ListObject 上的数据碎片。
我有一个 POCO 类和实体框架。
我将实体作为事件的 IBindingList 对象传递给 ListObject。
当我进入.SaveChanges()
实体时,它会崩溃,因为并非所有对象都是有效的,看起来像是全有或全无。
所以现在我正在考虑分离无效对象,直到它们变得有效并保存有效项目。
ListObject ListChanged 事件的事件过程很奇怪。
让我也分享一下:当您向列表对象添加一行时,这将创建一个新的空对象(除非您没有进行验证)将是一个无效实体。
public partial class Sheet3
{
private DonorContext db = new DonorContext();
private void Sheet3_Startup(object sender, System.EventArgs e)
{
db.Donors.Load();
IBindingList donors = db.Donors.Local.ToBindingList();
donors.ListChanged += donors_ListChanged;
this.Donors.SetDataBinding(donors, "", "ID", "DonorName", "Address1", "Address2", "City", "State", "PostalCode", "Phone", "Email", "IsPOBox", "HasErrors");
}
// Concider this nothing more than an event to hook into for informing
// Entity Framework to save changes.
void donors_ListChanged(object sender, ListChangedEventArgs e)
{
foreach (var itm in (IBindingList)sender)
{
Donor donor = (Donor)itm;
}
}