实体框架在关闭检测更改的情况下修改集合属性

prb*_*prb 5 c# entity-framework

出于性能原因,我在 DbContext 上设置了 AutoDetectChangesEnabled = false。

更新简单属性和引用属性都可以正常工作,但我在处理多对多且没有连接类的集合属性时遇到了麻烦。

这是尝试添加到集合中的缩写代码:

var item = context.Set<Item>().FirstOrDefault();    
var category = context.Set<Category>().FirstDefault();

context.Entry(item).Collection(i => i.Categories).CurrentValue.Add(category);
Run Code Online (Sandbox Code Playgroud)

但它什么也没做,在 SaveChanges 之后数据库与以前相同。这是这样做的正确方法吗?

Bac*_*cks 4

称呼:

context.ChangeTracker.DetectChanges();
Run Code Online (Sandbox Code Playgroud)

或者:

context.Entry(item).State = EntityState.Modified;
Run Code Online (Sandbox Code Playgroud)