C# 林克。为什么只有第一次满载?

C# 林克。为什么只有第一次满载?,c#,entity-framework,linq,select,load,C#,Entity Framework,Linq,Select,Load,我有一个实体合同,列表KindWorks和KindWorks public partial class Contracts { public Contracts() { ListKindWorks = new HashSet<ListKindWorks>(); } public int Id { get; set; } ... public virtual ICollection<ListKindWorks>

我有一个实体
合同
列表KindWorks
KindWorks

public partial class Contracts
{
    public Contracts()
    {
        ListKindWorks = new HashSet<ListKindWorks>();
    }

    public int Id { get; set; }
    ...
    public virtual ICollection<ListKindWorks> ListKindWorks { get; set; }
}

public partial class ListKindWorks
{
    public int IdContract { get; set; }
    public int IdKindWork { get; set; }

    public virtual Contracts IdContractNavigation { get; set; }
    public virtual KindWorks IdKindWorkNavigation { get; set; }
}

public partial class KindWorks
{
    public KindWorks()
    {
        ListKindWorks = new HashSet<ListKindWorks>();
    }

    public int Id { get; set; }
    public string Title { get; set; }
    public virtual ICollection<ListKindWorks> ListKindWorks { get; set; }
}
我想通过方法加载相关元素
load()

方法
Load()
(在Load app期间)的第一次调用给出了完整的元素<代码>实物和
主题
不为空。但是当我更改
页面时,
工作
主题
都是空的。其余的总是在变化


为什么后续调用不加载此部件?

使用变量源作为IQueryable,因此每次使用时都会对数据库执行.ToList()查询,以便获得更改后的数据

IQueryable<Contracts> source = *...* // without .ToList()

成功了。但是该方法的执行时间大大增加了。没有其他方法吗?每次生成.ToList(),查询都会被执行,这就是为什么它会变慢的原因,特别是如果调用太频繁的话。这看起来像是基本的分页查询,你为什么这么频繁地打电话给我?我需要为每个合同找到工作和主题。我尝试将AsQueryable()作为KindWork和Subject的选择,最后尝试了一次.ToList()。但时间是一样的,我错了。现在我做了很多的慈善工作和课题。ToList()仅当需要控制.Items时
source = model.Contracts
    .OrderByDescending(r => r.Id)
    .Skip(Page * Size)
    .Take(Size)
    .Select(c => new ContractTableRow
    {
        IdContract = c.Id,
        FullName = c.WorkerNavigation.FullName,
        IdWorker = c.Worker,
        ...

        // this code
        KindWork = c.ListKindWorks
        .Select(y => new Item 
        { Id = y.IdKindWork, Value = y.IdKindWorkNavigation.Short })
        .ToList(),

        Subject = c.ListSubjects
        .Select(y => new Item
        { Id = y.IdSubject, Value = y.IdSubjectNavigation.Short })
        .ToList()
    })
    .ToList();
IQueryable<Contracts> source = *...* // without .ToList()
var smth = source.ToList();