使用Fluent NHibernate和guid id

时间:2011-06-20 08:43:45

标签: oracle nhibernate fluent-nhibernate guid

我们正在使用Fluent NHibernate 1.2,我们的主键是保存在 nvarchar(32)列中的guid,与Oracle 11gr2一起使用。

我们怎样才能做到这一点? (进行自动转换......)

非常感谢,随机程序员...

更新: 忘了提一下,guid在没有短划线的情况下保存了......

1 个答案:

答案 0 :(得分:6)

更新

您必须实施自己的IUserType才能处理无法使用的Guids 你可以在这里阅读:
http://dotnet.dzone.com/articles/understanding-nhibernate-type

以下详细信息现在与此问题无关,但我会将其保留在此处供将来参考,供人们查找。

使用Guids“通常”

在您的实体中,ID应为Guid类型:

public virtual Guid Id { get; private set; }

在你的ClassMap中你应该像这样映射它:

Id(x => x.Id)
  .Column("Id")
  .GeneratedBy.GuidComb();

这将使用推荐的梳理算法生成新的guid。

Id(x => x.Id)
  .Column("Id")
  .GeneratedBy.Guid();

使用System.Guid

创建新的Guids

Id(x => x.Id)
  .Column("Id")
  .GeneratedBy.GuidNative();

如果你想让数据库为你生成Guid。