c# - LINQ。为什么只有第一次满载?
问题描述
我有一个实体Contracts
,ListKindWorks
和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; }
}
和类Item
public class Item
{
public int Id { get; set; }
public string Value { get; set; }
}
我想通过方法加载相关元素Load()
:
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();
该方法的第一次调用Load()
(在加载应用程序期间)会提供完整的元素。KindWork
并且Subject
不为空。但是当我改变时Page
,KindWork
并且Subject
是空的。其余的总是在变化。
为什么后续调用不加载这部分?
解决方案
将变量源用作 IQueryable,因此每次使用 .ToList() 查询时都会对数据库执行查询,以便您获得更改的数据。
IQueryable<Contracts> source = *...* // without .ToList()
这会将其保存为查询(没有数据,因为它尚未在 db 上执行)
每次调用 .ToList() EF 都会在 sql 上执行。
var smth = source.ToList();
推荐阅读
- php - 我的 Wordpress 网站上的 3 个不同时间
- mendeley - Mendeley Web Importer 中的奇怪结果
- c# - 将标签传递给不更新label.text的方法?
- python - 如何使用 Discord.py Rewrite (1.0.0) 版本播放音乐
- python - Mac OS High Sierra:`pip3 upgrade` 和 `python3 -c 'import tensorflow as tf 返回的 Tensorflow 版本;print(tf.__version__)'` 不同
- ffmpeg - ffmpeg:使用 NVIDIA GPU 硬件加速时“无法在格式之间进行转换”
- c# - 为什么这个简单的 Json 模式在 NJsonchema 中无效?
- javascript - 如何将一个类更改为所有 div?
- botframework - 这是 Visual Studio 的 Bot Builder V4 SDK 模板中的错误吗
- python - 尽管已安装 ModuleNotFoundError