SQL LINQ查询继续循环遍历两个表

时间:2017-08-07 23:14:31

标签: c# asp.net sql-server database linq

我试图在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() ;

1)此截图显示表信息和(外键表) Debugger Showing table information of 当我查看外键表信息时,它也有日志。 进入日志将显示图片(1)

中的相同表格

2) enter image description here 我确定之前有人问过,但我不知道这个问题叫什么。我是数据库新手。谢谢你的建议!

1 个答案:

答案 0 :(得分:0)

作为快速修复,您可以使用dbContext.Configuration.LazyLoadingEnabled = false; 就在你的查询之前。您也可以全局禁用它。

实体框架会急切地加载所有相关实体。如果您有多个级别的实体,或者相互引用的实体,那么,正如您所经历的那样,它将继续遵循这些关系。禁用延迟加载将阻止此操作。请注意,您必须通过.include()函数明确声明您想要包含的任何内容。

另一种选择是重新设计您的数据库,以便不是这种情况,但有时这是不可行的。我真的不知道你项目的错综复杂的工作方式,所以我在这里猜测。

编辑:

我忘了添加,如果您进入模型浏览器并探索由Entity Framework为您创建的模型,您将找到导致该问题的那些关系。如果您首先使用代码,则可以轻松解决此问题。如果您首先使用数据库,那么您在某种程度上可以理解EF如何解释关系。