[英]Entity Framework Core Linq query doesn't translate to correct SQL statements
所以我正在调试我们使用 Entity Framework Core 2.1.14 的应用程序。 我首先通过脚手架从数据库创建了我的实体。 数据库是 MySQL 5.7.29,EF Core 的 SQL 数据提供程序是 Oracle 的 MySql.Data.EntityFrameworkCore 8.0.19。
示例:一个简单的 Linq 查询应该在后端创建一个正确的 SQL 语句。 然而事实并非如此。 “非活动”是一个字节?
Dim associates = (From a In DatabaseContext.Associate
Where a.Inactive = 0
Select a.AssociateId).ToList()
这个简单的 Linq 查询返回: SELECT `a`.`Inactive`, `a`.`AssociateID` FROM `associate` AS `a`
。 所以基本上它会下载所有关联并在 memory 中执行“位置”并返回值。 我知道根据文档,一些查询可能很复杂并且无法翻译,但这是最简单的简单查询。 是因为 Inactive 列可以为空吗? 有什么可怕的不对。
仅供参考:EF Core 位于 class 库中,即 C#。 VB 代码位于另一个引用 class 库的 VB 项目中。
嗯,似乎答案是使查询在 VB 中更具体。 我猜 C# class 库和 VB 项目之间的查询转换似乎是问题所在。
Dim associates = (From a In DatabaseContext.Associate
Where a.Inactive.Value = Convert.ToByte(0)
Select a.AssociateId).ToList()
这提供了正确的查询:
SELECT `a`.`AssociateID`
FROM `associate` AS `a`
WHERE `a`.`Inactive` = 0
很奇怪,在 C# 中,您不必检查 .Value 并将 0 转换为字节,但在 VB 中我必须这样做,没有其他方法可以让它工作。 感谢所有试图帮助解决此问题的人。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.