1

我有一张桌子,里面有 apikey 和 secretkey。两者都是 sql 中的 uniqueIdentifiers 数据类型。

当我使用 Fluent NHibernate 检索记录时,其他字段(如授权域)在数据库中的任何情况下都会检索到它们的文本。

但是对于 Secret 列,检索到的文本是小写的。即 D28DCFE1-692E-4C0A-ADD8-DF9CF6A375FC => d28dcfe1-692e-4c0a-add8-df9cf6a375fc

这给我带来了问题,因为我必须大写然后发送它来生成签名。小写和大写导致不同的签名。

数据模型是:

public virtual string BrandId { get; set; }
public virtual Guid ApiKey { get; set; }
public virtual string SharedSecret { get; set; }
public virtual string ContactEmail { get; set; }

现在我不想在检索后故意将其设为大写,因为如果与 apiusers 共享小写密钥怎么办......

我需要对 FNH 进行配置更改吗?还是映射变化?我研究了这个问题,但似乎没有人遇到过这个问题。

映射:

Id(x => x.ApiKey);
Map(x => x.SharedSecret);
Map(x => x.BrandId);
4

1 回答 1

1

原因

这很可能是sql server如何处理uniqueIdentifiers的问题。您发送的字符串将转换为忽略大小写的字节,并在检索时转换为小写字符串。

证明

直接在数据库上运行 Select 并查看结果以验证这一点。

解决方案

将数据类型更改为字符串类型,如 varchar。

于 2013-05-28T13:20:15.583 回答