因此,我正在调试使用Entity Framework Core 2.1.14的应用程序。我首先通过脚手架从数据库创建了实体。数据库为Oracle 5.7.29,EF Core的MySQL数据提供程序为Oracle的MySql.Data.EntityFrameworkCore 8.0.19。
示例:一个简单的Linq查询应该在后端创建一个合适的SQL语句。然而,事实并非如此。"Inactive“是Byte?
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`。因此,基本上它会下载所有的关联,并在内存中查找"where“并返回值。我知道根据文档,有些查询可能很复杂,无法翻译,但这是最简单的查询。是否是因为非活动列可以为空?有些事情是可怕的,不是正确的。
仅供参考: EF Core位于C#类库中。VB代码在另一个项目中,即引用类库的VB。
发布于 2020-04-15 02:01:09
嗯,似乎答案是在VB中使查询更具体。我猜C#类库和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中,我必须这样做,没有其他方法可以让它工作。感谢所有想要帮助我们的人。
https://stackoverflow.com/questions/61200375
复制相似问题