C# nHibernate为Id生成Guid,但属性为字符串

C# nHibernate为Id生成Guid,但属性为字符串,c#,nhibernate,activerecord,asp.net-identity,castle-activerecord,C#,Nhibernate,Activerecord,Asp.net Identity,Castle Activerecord,我正在尝试创建一个实现Microsoft.AspNet.Identity.IUser的nHibernate实体,但我想为Id键属性使用GUID。我是在Castle ActiveRecord环境中构建的 我正在我的User类中为每个界面编写一个属性,如下所示: public class User : IUser { public virtual string Id { get; set; } public virtual string UserName { get; set; }

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

我正在我的
User
类中为每个界面编写一个属性,如下所示:

public class User : IUser
{
    public virtual string Id { get; set; }
    public virtual string UserName { get; set; }
}
我希望能够使用数据库中生成的Guid填充
Id
列,但使用Guid字符串填充实体中的
Id
属性

我想我会很好地重写
NHibernate.Id.TableGenerator
如下:

public class GuidStringGenerator : TableGenerator
{
    public override object Generate(ISessionImplementor session, object obj)
    {
        return Guid.NewGuid().ToString();
    }
}
。。。但现在我想我不会真正实现我想要的;这似乎会在数据库中生成字符串值,而不是Guid

关于如何实现这一点有什么建议吗?

你好,杰里米·霍洛瓦茨

您可以实现IUser explicit的Id属性

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

嗯,我以前从来没有这样做过。我会试试看。