我们正在使用Fluent NHibernate 1.2,我们的主键是保存在 nvarchar(32)列中的guid,与Oracle 11gr2一起使用。
我们怎样才能做到这一点? (进行自动转换......)
非常感谢,随机程序员...
更新: 忘了提一下,guid在没有短划线的情况下保存了......
答案 0 :(得分:6)
您必须实施自己的IUserType才能处理无法使用的Guids
你可以在这里阅读:
http://dotnet.dzone.com/articles/understanding-nhibernate-type
以下详细信息现在与此问题无关,但我会将其保留在此处供将来参考,供人们查找。
在您的实体中,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
或
Id(x => x.Id)
.Column("Id")
.GeneratedBy.GuidNative();
如果你想让数据库为你生成Guid。