我有一张桌子,里面有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);
答案 0 :(得分:1)
这很可能是sql server如何处理uniqueIdentifier的问题。您发送它的字符串将被转换为忽略大小写的字节,并在检索时转换为小写字符串。
直接在数据库上运行Select并查看结果以验证这一点。
将数据类型更改为字符串类型,如varchar。