ahe*_*ick 5 entity-framework entity-framework-core
我正在尝试覆盖SaveChanges方法,以仅保存特定实体的更改。
所以我想打电话 DB.SaveChanges<MyEntity>();
但是,我不想丢失在给定上下文中可能发生的所有先前更改。
我正在做类似下面的事情,但是我的对象值(当前)没有被设置回以前。
需要改变什么?
public async Task<int> SaveChanges<T>() where T : class
{
var original = (from et in this.ChangeTracker.Entries()
where !typeof(T).IsAssignableFrom(et.Entity.GetType()) && et.State != EntityState.Unchanged
group et by new { et.State, et.CurrentValues } into grp
select new
{
key = grp.Key.State,
values = grp.Key.CurrentValues,
data = grp
}).ToList();
foreach (var entry in this.ChangeTracker.Entries().Where(x => !typeof(T).IsAssignableFrom(x.Entity.GetType())))
{
entry.State = EntityState.Unchanged;
}
var rows = await base.SaveChangesAsync();
foreach (var state in original)
{
foreach (var entry in state.data)
{
entry.State = state.key;
entry.CurrentValues.SetValues(state.values);
}
}
return rows;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
651 次 |
| 最近记录: |