在火鸟桌中找不到的Guids

时间:2014-01-14 09:57:19

标签: .net linq firebird guid entity-framework-6

我有一个定义为

的表
CREATE TABLE "Test1"
(
  ID Char(16) CHARACTER SET OCTETS NOT NULL,
  "StartedAt" Timestamp NOT NULL,
  CONSTRAINT "PK_Test1" PRIMARY KEY (ID)
);

我插入带有GUID作为ID的记录。我使用Entitiy Framework 6来读取和插入记录。

当我使用以下LINQ代码从表中获取数据时,我什么都没得到:

var dbData = repo.Select(record => parentSource.Contains(record.ID))
.OrderBy(record => record.TimeStamp);

parentSource是一个List< Guid>并包含一些指导。 repo是我的数据库上下文。当我看一下生成的SQL时,我得到了这个:

SELECT 
"B"."ID" AS "ID", 
"B"."StartedAt" AS "StartedAt", 
FROM "Test1" AS "B"
WHERE "B"."ID" IN (CHAR_TO_UUID('60c78366-e6d2-4cba-b830-27ad0e4d06f2'),CHAR_TO_UUID('dbfa36ed-ec81-4914-ad70-4a0dd0677fdd'))

你可以看到我在表中搜索了两个guid,并且表中都存在两个guid。但他们没有找到。当我比较CHAR_TO_UUID函数的输出时,我获得了与插入记录时在ID列中生成的值不同的值。 那么,如何使这段代码工作?

EDIT1: Firebird数据库是2.5 .net提供商是4.0

中列ID的值
ed36fadb81ec1449ad704a0dd0677fdd
6683c760d2e6ba4cb83027ad0e4d06f2

char_to_uuid的输出是

dbfa36edec814914ad704a0dd0677fdd
60c78366e6d24cbab83027ad0e4d06f2 

两个guid是相同的,所以应该通过上面的linq代码找到它们。我可以看到,guids部分相同。前4个字节的顺序相反,接下来的2个2字节也是如此。

0 个答案:

没有答案