virtual关键字在 EF Code First 中的属性上使用时是否有效?有人可以描述它在不同情况下的所有后果吗?
virtual
例如,我知道它可以控制延迟加载——如果您在 ICollection/一对多关系属性上使用 virtual 关键字,默认情况下它将延迟加载,而如果您不使用 virtual 关键字,它将急切地加载。
virtual关键字在带有 POCO 实体的 EF 中还有哪些其他影响?我应该让它默认使用virtual我的所有属性,还是默认不使用它?
到目前为止,我知道这些影响。
要获得更改跟踪代理,基本规则是您的类必须是公开的、非抽象的或非密封的。您的类还必须为所有持久化的属性实现公共虚拟 getter/setter。最后,您必须将基于集合的关系导航属性声明为ICollection<T>only。它们不能是具体实现或派生自ICollection<T>(与延迟加载代理不同)的另一个接口
ICollection<T>
描述此内容的另一个有用链接是 MSDN 的Requirements for Creating POCO Proxies。