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();