使用Fluent nhibernate检索GUID时,字符串将转换为小写

时间:2013-05-24 14:17:34

标签: c#-4.0 fluent-nhibernate fluent-nhibernate-mapping

我有一张桌子,里面有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);

1 个答案:

答案 0 :(得分:1)

原因

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

证明

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

解决方案

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