我很难弄清楚如何标题这个问题,因为问题真的很奇怪。
我对现有数据库实体框架类有一个Code First。让我们将它们限制在两个相关的位置:
public class Product
{
public int ProductId { get; set; }
public string Code { get; set; }
public string Name { get; set; }
public virtual Group Group { get; set; }
}
public class Group
{
public int GroupId { get; set; }
public string Code { get; set; }
public string Name { get; set; }
//public virtual ICollection<Product> Products { get; set; }
}
现在我运行代码
using(var context = _contextFactory.GetContext())
{
var t1 = context.Groups.ToList();
var t2 = context.Products.ToList();
}
它运行得很好,在几秒钟内填充列表(产品表非常大)。
但如果我取消注释评论行,就会发生奇怪的事情。像往常一样填充t1
但t2
需要花费数十倍的时间。如果我交换t1
和t2
分配,那么t2
会快速运行,t1
会运行很长时间。
在我看来,EF在幕后Context
做了一些事情,并且在某种程度上存在这种关系的问题。其他人有这个问题或知道解释?我现在使用EF已经很长时间了,从来没有看到过这种行为。
在SQL数据库中,Product
和Group
之间存在关联。