我首先使用代码EF5我有一个对象,其集合定义为virtual
(延迟加载)。调用时返回数据。不过我希望它能够立即加载。我已经删除了virtual
来自属性签名,但现在它总是返回null
data. EF 甚至不运行查询,有人可以帮忙吗?
编辑:我知道.include()
我只是更喜欢使用非虚拟属性方法来执行此操作。
Objects
User
([Key]
Id 位于 Resource 对象上,该对象是 person 类的父级):
namespace Entities
{
[Table("Users")]
public class User : Person
{
[Required]
public ICollection<Role> Roles { get; set; }
}
}
Role:
namespace Entities
{
public class Role
{
[Key]
public string Id { get; set; }
public virtual ICollection<User> Users { get; set; }
}
}
这是一个常见的困惑。延迟加载的反面是:no加载中unless您自己明确地进行加载(例如,通过使用急切加载Include
).
因此,如果您以任何方式关闭延迟加载 - 删除virtual
修饰符就是其中之一——行为不会变成急切加载 but 没有加载.
想一想,假设 EF 会急切地加载所有未标记为延迟加载的内容。通过执行一个简单的查询,您将面临加载一半数据库的风险!
有no way https://stackoverflow.com/a/6042079/861716默认情况下使导航属性立即加载(如果您在阅读上述内容后仍然希望这样做)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)