首页 新闻 会员 周边

正在看MSDN关于EF的文档,其中这个怎么理解

0
悬赏园豆:10 [已解决问题] 解决于 2018-02-03 14:33

为什么用虚拟属性就能实现懒加载呢?没用过虚拟属性,不太清楚,查了一下可以重写,这个跟延迟加载有什么关系呢

猝不及防的主页 猝不及防 | 老鸟四级 | 园豆:2781
提问于:2018-02-03 10:31
< >
分享
最佳答案
0

其实通过EF查询出来的实体类,并不是原来的Blog和Post类,而是EF动态生成的代理类,这个代理类会继承原实体类并重写virtual属性,这样才能实现延迟加载,否则原来简单的{get;set;}是实现不了延迟加载的,延迟加载的逻辑需要EF在后面(代理类)为我们写好。而如果不加virtual的话,根据C#的规则,是不能重写的(java相反,默认是virtual,要加final才是不能重写),所以必须加virtual。

收获园豆:10
zhangweiwen | 小虾三级 |园豆:904 | 2018-02-03 11:22

请问您是从哪里知道这些信息的呢,我也想深入理解一下

猝不及防 | 园豆:2781 (老鸟四级) | 2018-02-03 13:48

@猝不及防: https://msdn.microsoft.com/en-us/library/jj592886(v=vs.113).aspx

zhangweiwen | 园豆:904 (小虾三级) | 2018-02-03 14:08
其他回答(2)
0

你可以这么理解,一个班级里面有50个学生,老师不知道哪些人是懒的,那么如果这些人头上带个帽子,写着懒人。

老师就容易分辨了。

简单的说, Virtual 就是老师(EF)用来分辨懒人的帽子。

爱编程的大叔 | 园豆:30839 (高人七级) | 2018-02-03 10:37

明白了,就是说这是一个标记,而不是用虚属性具体实现

支持(0) 反对(0) 猝不及防 | 园豆:2781 (老鸟四级) | 2018-02-03 11:21
0

楼上把我想说的都说完了,哎,没啥要说的了。

西漠以西 | 园豆:1675 (小虾三级) | 2018-02-03 11:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册