c# - Entity Framework Core 3 Preview 7 - 包括 Where 中使用的属性所必需的
问题描述
以前这会起作用:
var query = _context.Favourites
.Where(o => o.User.UserId == user.UserId);
现在我需要为“用户”对象包含“包含”
var query = _context.Favourites
.Include(o => o.User)
.Where(o => o.User.UserId == user.UserId);
那正确吗?这改变了Entity Framework Core 3 Preview 7
吗?
如果我不包括它,我会得到一个不友好的例外。
解决方案
Entity Framework Core 允许您使用模型中的导航属性来加载相关实体。有三种常见的 O/RM 模式用于加载相关数据。
急切加载意味着从数据库加载相关数据作为初始查询的一部分。
显式加载意味着稍后从数据库中显式加载相关数据。
延迟加载是指在访问导航属性时,透明地从数据库中加载相关数据。
何时使用急切加载
- 在一对多关系的“一侧”中,您确定在任何地方都使用主实体。喜欢收藏夹的用户属性。产品的类别属性。
- 通常,当关系不是太多时,急切加载将是减少服务器上进一步查询的好习惯。
何时使用延迟加载
几乎在一对多关系的每个“收集方”上。喜欢用户的收藏夹或类别的产品。
您确切地知道您不会立即需要财产。
注意:延迟加载可能存在处理问题。
有关在 EF Core 中加载相关数据的更多详细信息,您可以参考官方文档
推荐阅读
- wordpress - 带有 ACF 字段的 Wordpress 查询附件
- amazon-web-services - 是否可以通过 SSH 连接到 FARGATE 托管容器实例?
- python - 使用 apply_async 写入文件
- html - Firefox 上的动画不起作用(仅限 CSS)
- java - ArrayList 打印重复元素
- c# - UpdatePanel 中的列表框不会第二次触发
- node.js - Node.js + Express - 如何记录请求正文和响应正文
- android - 如何更好地理解错误以进行修复
- java - 需要回调方法实现
- ios - Swift 3 和 Swift 4 中的 WebService API 方法?