我正在尝试从页面上先前加载的产品列表中加载不同颜色的列表。因此,为了引入产品,我这样做:
var products = Products
.Include(p => p.ProductColor)
.ToList();
然后我对产品进行一些处理,我想获得产品使用的所有不同颜色的列表,所以我这样做:
var colors = products
.Select(p => p.ProductColor)
.Distinct();
这很好用,但是如果我.AsNoTracking()
在原始产品调用中添加调用,我现在会在产品列表中的每个条目的颜色列表中获得一个条目。
为什么这两者有区别?有没有办法让实体框架不跟踪对象(它们被用于只读)并获得所需的行为?
这是我在添加调用后的查询AsNoTracking()
var products = Products
.AsNoTracking()
.Include(p => p.ProductColor)
.ToList();