this.Configuration.ProxyCreationEnabled = false;
来禁用它。Include
方法来进行急切加载(Eager Loading),如:db.Persons.Include(p => p.Cars).Include(p => p.Pets).Include(p => p.Children).Where(p => p.Id == personId);
Load
方法来进行显式加载(Explicit Loading),例如:db.entry(person).Collection(p => p.Cars).Load();
用于集合导航属性,或者db.entry(person).Property(p => p.Home).Load();
用于简单导航属性。懒加载(Lazy Loading)、显式加载或急切加载,如果您没有正确地使用EF,则无法提高应用程序性能。请检查代码以确保您正在正确使用EF。
ToList()
, ToArray()
等方法只执行一次查询,避免在需要重新迭代查询时向数据库发送相同的请求。根据应用程序的需求,有很多可以改进的地方。您可以使用缓存来避免未来的请求等等...
对我来说,问题出在我未能正确地使用 async/await 代码!根据 OP 的说法,它由于相同的原因而挂起,但我没有收到任何错误消息。
我唯一解决这个问题的方法是在应用程序启动处设置一个断点,并逐步执行。虽然不是非常快,但也不是一个大任务。