我在理解实体框架5中的延迟加载时遇到了问题。我理解当使用延迟加载时,相关实体直到请求时才被加载:
当使用延迟加载时,初始查询只会引入目标实体集。但每当您访问导航属性时,就会对存储发出另一个查询,以加载相关实体()。
我有一个带有两个类的ASP.NET Web项目:
public class Farm
{
public int FarmId { get; set; }
public virtual ICollection<LandUnit> LandUnits { get; set; }
...
}
public class LandUnit
{
试图在实体frameowrk中找出延迟加载和急切加载之间的区别。假设我有以下模型:
public interface IBaseEntityObject
{
public int Id {get; set;}
}
public abstract class BaseEntityObject : IBaseEntityObject
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id {get; set;}
}
public class Folder : B
在我们的代码中,有时我们需要在加载页面的一段时间后加载一个函数,比如缓存页面加载时不需要的网站文章。
我想知道我们是否可以编写或使用一些语法,以便惰性加载特定的函数。
示例:
lazyload funnction xyz(){
// put your code here
}
如果有任何方法可以做到这一点或类似的方法,那么如果您向我指出任何模式、框架等,都是很好的。
在加载类A时,假设A的字节代码引用了许多其他类。假设A类如下所示。
class A extends B implements C,D {
static E e;
F f;
A() {
G g = new G();
}
void print(H h) {
}
}
JVM是否加载了A使用的所有类?或者,在初始化类之前,它不会为它们操心?
如果其中至少有一些是加载的,那么在A完成之后会加载它们吗?或者A's加载会暂停到所需的类加载?
对于这个问题,假设还没有加载其他类。甚至是超类B和接口C & D。
假设首先使用的是EF6代码。假设我们有一个简单的两表关系。其中一个病人有一个关联的医生。
class Patient
{
[Key]
public int id { get; set; }
public string Name { get; set; }
[ForeignKey("Doctor")]
public int DoctorId { get; set; }
public virtual MedicalPersonel Doctor { get; set; }
}
class MedicalPersonel
{
[Key]