【发布时间】:2021-08-24 11:14:49
【问题描述】:
我有一个名为 AllTables 的 ObjectSet,其中包括表 Table1、table2、tabl3... 但现在它比我尝试在 AllTable 中进行选择时大得多,但出现以下异常
SqlException:内部错误:表达式服务限制已被限制 到达。请在您的 查询,并尝试简化它们。
那个是查询,AllTables 是一个包含多个实体的实体集。当您在 entitySet 上进行选择时,EF 会在构成 setobject 的所有实体中生成查询搜索,从而创建一个超过 65000 个字符的非常大的查询
qGetByKey = CompiledQuery.Compile<EntitiesContext, Guid, Table>((context, key) => context.AllTables.FirstOrDefault(AT =>
AT.id.Equals(key)));
有什么建议吗?
【问题讨论】:
-
不,我之前看到过这个问题,但我不知道实体框架创建连接所有表的选择的方式
-
你会的。查询 entities 是您自己的代码。像 EF Core 这样的 ORM 处理的是 entities 而不是表。没有 JOIN,表之间有预先配置的关系。 DbContext 不是数据库模型或数据库连接,它包含特定用例中使用的实体。 client 代码创建被翻译成 SQL 的查询。如果您的代码使用过于复杂的查询,则可能无法将其转换为 SQL
-
您能告诉我们您的查询吗?
-
qGetByKey = CompiledQuery.Compile
( (context, key) => context.AllTables.FirstOrDefault(AT => AT.id.Equals(key)));跨度>
标签: c# sql-server entity-framework