作爲我的DbContext中保存操作的一部分,我需要序列化擴展信息以存儲在數據庫的二進制字段中。作爲實體框架的一部分的其他操作保存
我已經編寫了以下方法來攔截已添加或修改的所有Client對象,以確保序列化在保存之前發生。我想知道是否有更好的方法來做到這一點,或者如果這種方法會產生問題。
public int Save()
{
foreach (Client client in this.Context.Local.Clients)
{
EntityState state = this.Context.Entry(client).State;
if (state == EntityState.Added || state == EntityState.Modified)
{
client.SerializeExtended();
}
}
return this.Context.SaveChanges();
}
重寫DbContext.SaveChanges方法,並將序列化邏輯放在那裏。也請在您的自定義代碼之前調用ChangeTracker.DetectChanges方法。 – cubski
我同意重寫SaveChanges將是一個優雅的方式來做到這一點。就我而言,我使用的是不公開底層上下文的存儲庫,因此使用Save方法可以在不知道數據提供者的情況下觸發保存。 – Ketrex