2

我被 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 中运行得很好。如何解决这个问题?

我正在使用:

火鸟服务器 v2.1.6.18547

实体框架 v6.0.0.0

EntityFramework.Firebird v4.5.2.0

FirebirdSql.Data.FirebirdClient 4.5.2.0

4

1 回答 1

1

该错误表明您正在使用方言 1 进行连接。方言 1 是 Interbase 5 及更早版本的旧方言,应被视为已弃用(尽管不幸的是,Firebird 仍然支持 15 年......)。

在方言 1 中,不能引用对象名称,并且双引号用于字符串(而不是方言 3 和 SQL 标准中的单引号)。当您的查询以方言 1 进行解析时,Firebird 将其视为字符串常量,并且解析器不需要"A"以下点 ( )。.

切换到方言 3 应该可以解决此问题,但是如果您这样做,请确保您的数据库本身也是方言 3,否则您可能会遇到其他意外行为,例如某些数据类型不起作用或错误等。

于 2014-12-23T14:31:59.983 回答