我先使用代码EF5,并且有一个对象的集合定义为virtual
(延迟加载)。调用时返回数据。但是我希望它能被加载。我已从virtual
属性签名中删除,但现在它总是返回null
数据。EF甚至没有运行查询,任何人都可以帮忙吗?
编辑:我知道.include()
我只想使用非虚拟属性方法来执行此操作。
对象
User
([Key]
ID位于人类的父级的Resource对象上):
namespace Entities
{
[Table("Users")]
public class User : Person
{
[Required]
public ICollection<Role> Roles { get; set; }
}
}
角色:
namespace Entities
{
public class Role
{
[Key]
public string Id { get; set; }
public virtual ICollection<User> Users { get; set; }
}
}
这是一个普遍的困惑。懒加载相反的是:没有装载,除非你明确地做自己负载(例如,通过预先加载使用Include
)。
因此,如果您以任何方式关闭延迟加载-删除virtual
修饰符就是其中之一-这种行为不会变成渴望加载,而是不会加载。
考虑一下,假设EF会急切加载未标记为延迟加载的所有内容。通过执行一个简单的查询,您就有可能加载一半的数据库!
有没有办法使默认导航属性立即加载(如果你还是会希望那看完上面)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句