私の問題: SQL Server に保持したい listobject があり、Entity Framework で .SaveChanges() を呼び出すと、コンテキスト内の一部のオブジェクトが有効でないため失敗します。
私の質問: 有効な変更のみを保持するにはどうすればよいですか? 無効なものについてクライアントに通知する UI に取り組みます。
私は VSTO Excel ワークブック プロジェクトで作業しており、ListObject のデータ クラッドを管理しようとしています。
POCO クラスと Entity Framework があります。
イベントの 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;
}
}