实体框架渴望加载不返回数据,延迟加载

Bar*_*rry 16 c# entity-framework lazy-loading poco

我首先使用代码EF5,我有一个对象,其集合定义为virtual(延迟加载).这会在调用时返回数据.但是我希望它能够满载.我已从virtual属性签名中删除但现在它总是返回null数据.EF甚至没有运行查询,任何人都可以帮忙吗?

编辑:我知道.include()我只是喜欢使用非虚拟属性方法.

对象

User([Key]Id在Resource对象上,是person类的Parent):

namespace Entities
{
    [Table("Users")]
    public class User : Person
    {

    [Required]
    public ICollection<Role> Roles { get; set; } 

    }
}
Run Code Online (Sandbox Code Playgroud)

角色:

namespace Entities
{
    public class Role
    {
        [Key]
        public string Id { get; set; }

        public virtual ICollection<User> Users { get; set; } 
    }
}
Run Code Online (Sandbox Code Playgroud)

Ger*_*old 39

这是一个常见的混乱.懒加载相反的是:没有装载,除非你明确地做自己加载(例如,通过使用预先加载Include).

因此,如果您以任何方式关闭延迟加载 - 删除virtual修饰符就是其中之一 - 行为不会转变为急切加载不加载.

想想看,假设EF会急切地加载未标记为延迟加载的所有内容.通过执行一个简单的查询,您就冒着加载一半数据库的风险!

没有办法使默认导航属性立即加载(如果你还是会希望那看完上面).