C#...帮助我理解_db.Users.Include的包含(" Something")

时间:2014-04-14 20:20:49

标签: c#

一个新手问题,我知道;但是,我经常看到它并且不明白.include正在做什么。

如果重要我正在使用MVC 4和C#。

我知道_db是对我的上下文的引用。 _db.Users在上下文中引用我的DbSet用户。

所以我有一张包含用户记录的表格,可以做各种各样的事情,我很擅长。但是.Include(“某事”)在做什么?

我见过的一个例子如下。我得到它为strUsername提取User类型的单个用户记录。没错,我迷失了.Include(“UserRoles”)。

User user = _db.Users.Include("UserRoles").Single(u => u.username == strUsername);

经过一些帮助,我知道这与急切加载有关。但我仍然找不到任何有助于理解模型结构以适应它的东西。

3 个答案:

答案 0 :(得分:2)

.Include强制加载相关数据。在你的情况下.Include(“UserRoles”)意味着将在同一个sql查询中加载User和UserRoles。

答案 1 :(得分:1)

includes用于实体框架中的预先加载

你可以在这里找到详细信息

http://msdn.microsoft.com/en-us/data/jj574232.aspx

答案 2 :(得分:0)

EF为延迟加载和急切加载提供了可能性,最后由Include IQueryable表达式完成。

考虑使用以下扩展方法:

http://msdn.microsoft.com/en-us/library/gg671236%28v=vs.103%29.aspx

如果您决定更改模型中的属性而忘记重命名Include方法中的属性,那么它将使您的代码更易于维护,因为您忘记了可能导致运行时错误的神奇字符串。