我试图在asp.net 5中调用linq查询。但是,我的查询导致两个表之间的数据无限循环。
Logs (logs_historical)
meterID (FK)
log_data
-----
Meters
meter_uid (PK)
我的目标是让多个日志与一米相关。
Relationships
Foreign key Base Table = logs
Foreign key Column = meterID
Primary Base Table = meters
Primary Key Colum = meterID
这是我的linq查询
records = dbContext.logs.Where(e =>(e.timestamp.Value.Month == inputDate.Month)).ToList() ;
中的相同表格
答案 0 :(得分:0)
作为快速修复,您可以使用dbContext.Configuration.LazyLoadingEnabled = false; 就在你的查询之前。您也可以全局禁用它。
实体框架会急切地加载所有相关实体。如果您有多个级别的实体,或者相互引用的实体,那么,正如您所经历的那样,它将继续遵循这些关系。禁用延迟加载将阻止此操作。请注意,您必须通过.include()函数明确声明您想要包含的任何内容。
另一种选择是重新设计您的数据库,以便不是这种情况,但有时这是不可行的。我真的不知道你项目的错综复杂的工作方式,所以我在这里猜测。
编辑:
我忘了添加,如果您进入模型浏览器并探索由Entity Framework为您创建的模型,您将找到导致该问题的那些关系。如果您首先使用代码,则可以轻松解决此问题。如果您首先使用数据库,那么您在某种程度上可以理解EF如何解释关系。