当我感觉它应该非常简单时,我真的很难让它发挥作用。
我已向服务层添加了一个缓存,用于存储从 EF 返回的数据。
当实体从 EF 返回并更新时,它的状态为EntityState.Modified
。
当它从缓存返回时,它的状态是EntityState.Detached
,这都是有意义的。
DbContext.Update
如果实体是,我会调用Detached
,并且这对于所有非导航属性都适用。
对于跟踪的实体,我可以直接更新 FK ID 属性,但如果它一开始是分离的,则必须通过导航属性进行更新。由于某种原因,这也会导致UPDATE
为每个相关实体运行一个语句,而不仅仅是我期望的多对多表。
跟踪实体:
// This will save to the DB
job.PrimaryAccountId = 123;
最初分离的实体:
// This will NOT save to the DB
job.PrimaryAccountId = 123;
// This will not save to the DB
job.PrimaryAccount.AccountId = 123;
在执行上述任一操作后更新并保存:
await _dataAccess.Update(job);
await _dataAccess.SaveChangesAsync();