我遇到了FbException
SQL错误代码= -104
令牌未知 - 第2行,第4列
尝试运行此代码时
var result = from x in _context.Bunts
select x;
我检查了由EF
生成的查询SELECT
"A"."BUNTCODE" AS "BUNTCODE",
"A"."BUNTNAME" AS "BUNTNAME",
"A"."BUNTDIAM" AS "BUNTDIAM"
FROM "BUNTS" AS "A"
所以服务器认为“A”语句后点有问题。但是这个查询在同一台机器上的IBExpert中运行得很好。如何解决这个问题?
我正在使用:
Firebird服务器v2.1.6.18547
EntityFramework v6.0.0.0
EntityFramework.Firebird v4.5.2.0
FirebirdSql.Data.FirebirdClient 4.5.2.0
答案 0 :(得分:1)
错误表明您正在使用方言1进行连接。方言1是Interbase 5及更早版本的旧方言,应该被视为已弃用(尽管不幸的是,Firebird还支持15年......)。
在方言1中,不能引用对象名称,双引号用于字符串(而不是方言3和SQL标准中的单引号)。当您在方言1中解析查询时,Firebird将"A"
视为字符串常量,并且解析器不期望使用以下点(.
)。
切换到方言3应该解决这个问题,但是如果这样做,请确保您的数据库本身也是方言3,否则您可能会遇到其他意外行为,例如某些数据类型不起作用或错误等。