为什么Guid在保存记录时会改变?

时间:2013-02-11 13:05:00

标签: c# asp.net-mvc nhibernate oracle10g

我有一个名为'Bid'的实体,以下是与此问题相关的代码:

类别:

public class Bid
{
    public virtual Guid Id { get; set; }
}

映射文件:

<id name="Id" column="Id" type="Guid">
  <generator class="guid.comb" />
</id>

Oracle中的数据类型:

Raw(16)

当我保存“Bid”类型的新对象(Repository.Save(bid))时,C#生成的Id为

db27b33c75314b41b171a1620130061a

,保存在oracle表中的那个是

3CB327DB3175414BB171A1620130061A

如果仔细观察,id的后半部分是相同的,但上半部分不是。

有人能告诉我如何更改我的代码,以便C#生成的Id保存原样?

我已经尝试过生成器类'assigned'和'guid.native',并尝试在oracle中将数据类型更改为varchar2(32),但无济于事。

2 个答案:

答案 0 :(得分:2)

第一部分也是相同的,但具有不同的字节顺序。反转下面前三个组中每个组的字节顺序,你会看到:

db27b33c 7531 4b41 b171a1620130061a

3CB327DB 3175 414B B171A1620130061A

这里有一些讨论:https://nhibernate.jira.com/browse/NH-1429

答案 1 :(得分:0)

对于其他来自谷歌的人,他们也是nhibernate和mysql的新手,在.hbm.xml文件中我改变了

<id name="Id" type="Guid">
  <generator class="guid" />
</id>

<id name="Id" type="Guid"/>

我的guids退出了。