一个新手问题,我知道;但是,我经常看到它并且不明白.include正在做什么。
如果重要我正在使用MVC 4和C#。
我知道_db是对我的上下文的引用。 _db.Users在上下文中引用我的DbSet用户。
所以我有一张包含用户记录的表格,可以做各种各样的事情,我很擅长。但是.Include(“某事”)在做什么?
我见过的一个例子如下。我得到它为strUsername提取User类型的单个用户记录。没错,我迷失了.Include(“UserRoles”)。
User user = _db.Users.Include("UserRoles").Single(u => u.username == strUsername);
经过一些帮助,我知道这与急切加载有关。但我仍然找不到任何有助于理解模型结构以适应它的东西。
答案 0 :(得分:2)
.Include强制加载相关数据。在你的情况下.Include(“UserRoles”)意味着将在同一个sql查询中加载User和UserRoles。
答案 1 :(得分:1)
答案 2 :(得分:0)
EF为延迟加载和急切加载提供了可能性,最后由Include
IQueryable表达式完成。
考虑使用以下扩展方法:
http://msdn.microsoft.com/en-us/library/gg671236%28v=vs.103%29.aspx
如果您决定更改模型中的属性而忘记重命名Include
方法中的属性,那么它将使您的代码更易于维护,因为您忘记了可能导致运行时错误的神奇字符串。