我将很快开始编写新的Web应用程序 . 该应用程序将使用ASP.Net MVC 3和Entity Framework 4.1(Database First方法)构建 . 我将使用ADO.NET POCO实体生成器创建POCO类,而不是使用默认的EntityObject类 .
当我使用此工具创建POCO时,它会自动将Virtual关键字添加到所有属性以进行更改跟踪和延迟加载的导航属性 .
然而,我从演示中读到并看到,Julie Lerman(EF Guru!)似乎关闭了延迟加载并修改了她的POCO模板,以便从她的POCO类中删除Virtual关键字 . Julie说她之所以这样做是因为她正在为WCF服务编写应用程序,并且使用Virtual关键字会导致序列化问题 . 她说,当一个对象被序列化时,序列化程序会触摸导航属性,然后触发延迟加载,在你知道之前,你正在通过网络拉动整个数据库 .
我认为当她说这可以将整个数据库拉到网上时,朱莉可能会夸大其词,但是,即便如此,这个想法让我感到害怕!
我的问题是(最后),我是否应该从我的POCO类中删除我的MVC应用程序的Virtual关键字,并使用DectectChanges进行我的更改跟踪和Eager Loading来请求导航属性 .
非常感谢您对此的帮助 .
谢谢你 .