其实通过EF查询出来的实体类,并不是原来的Blog和Post类,而是EF动态生成的代理类,这个代理类会继承原实体类并重写virtual属性,这样才能实现延迟加载,否则原来简单的{get;set;}是实现不了延迟加载的,延迟加载的逻辑需要EF在后面(代理类)为我们写好。而如果不加virtual的话,根据C#的规则,是不能重写的(java相反,默认是virtual,要加final才是不能重写),所以必须加virtual。
请问您是从哪里知道这些信息的呢,我也想深入理解一下
@猝不及防: https://msdn.microsoft.com/en-us/library/jj592886(v=vs.113).aspx
你可以这么理解,一个班级里面有50个学生,老师不知道哪些人是懒的,那么如果这些人头上带个帽子,写着懒人。
老师就容易分辨了。
简单的说, Virtual 就是老师(EF)用来分辨懒人的帽子。
明白了,就是说这是一个标记,而不是用虚属性具体实现
楼上把我想说的都说完了,哎,没啥要说的了。