nHibernate为Id生成Guid,但是将属性生成为字符串

时间:2014-03-20 15:05:49

标签: c# nhibernate activerecord asp.net-identity castle-activerecord

我正在尝试创建一个实现Microsoft.AspNet.Identity.IUser的nHibernate实体,但我想将Guids用于Id键属性。我正在Castle ActiveRecord环境中构建它。

我按照这样的界面在我的User课程中写了一个属性:

public class User : IUser
{
    public virtual string Id { get; set; }
    public virtual string UserName { get; set; }
}

我希望能够做的是在数据库中使用生成的Guid填充Id列,但使用Guid字符串填充实体中的Id属性。< / p>

我认为我可以像这样覆盖NHibernate.Id.TableGenerator

public class GuidStringGenerator : TableGenerator
{
    public override object Generate(ISessionImplementor session, object obj)
    {
        return Guid.NewGuid().ToString();
    }
}

......但现在我觉得实际上并没有实现我的目标;看来这会在数据库中创建一个字符串值,而不是Guid。

有关如何实现这一目标的任何智慧?

1 个答案:

答案 0 :(得分:1)

Hello Jeremy Holovacs,

你可以明确地实现IUser的Id-Property。

public class User : IUser
{
  public virtual Guid Id { get; set; }
  string IUser.Id{get{return this.Id.ToString();}}
  public virtual string UserName { get; set; }
}

问候 Juy Juka