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

本文关键字:属性 字符串 Guid Id 生成 nHibernate | 更新日期: 2023-09-27 17:51:10

我试图使一个实现Microsoft.AspNet.Identity.IUser的nHibernate实体,但我想使用Id键属性的Guids。我正在城堡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。

关于如何做到这一点有什么建议吗?

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

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