c# - Linq to Entity 和加载 EntitySet

标签 c# linq-to-entities

这是我第一次尝试了解来自 Net Tiers 的 Linq to Entity。与它作斗争但不理解它背后的一些逻辑……例如。 我什么时候使用:

Entity.EntitySet.Load()

context.Entity.Include("EntitySet").SingleOrDefault()

另外,为什么 Include 采用字符串而不是枚举或排序?

最佳答案

在 EF 中,您有延迟加载和预加载的概念。

  • 延迟加载意味着您​​可以在需要时加载数据。这是通过 Load() 方法调用完成的。
  • 预加载意味着您​​已经预先知道您将需要一些数据,因此您可以通过 Include(string) 将其加载到初始查询槽中。

Al tough Include 需要一个字符串,这并不意味着您不能扩展它!

T4 是个好东西。在我参与的一个项目中,我们创建了一个 EntityProperty 类,其中包含实体上所有导航属性的静态属性。这样,如果属性名称更改,您至少会得到一个编译错误。

如果您真的想更进一步,您可以构建一个采用 Lambda 的 Include 方法,然后在将其执行到 QueryProvider 之前重新排列表达式树。然后你就会有很好的静态类型。

关于c# - Linq to Entity 和加载 EntitySet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7912106/

相关文章:

c# - 检查 Entity Framework 中是否存在记录

c# - OutputDataReceived(和 ErrorDataReceived)的发射率很慢,会创建一个大缓冲区

c# - LINQ to SQL 在更新后返回旧数据

c# - 在字符串中找到一个确切的词

c# - Linq to Entities 在 Where 中使用自定义方法

.net - Entity Framework 插入需要选择权限

c# - 到本地 Sql Express Server 的并发 SqlConnection 和 EntityConnection

c# - 在 C# 中单击按钮时验证文本框是数字

c# - 用于验证以逗号或破折号分隔的数字的正则表达式

c# - 跨语言编码标准