NHibernate:如何设置组件中的属性Id

NHibernate:如何设置组件中的属性Id,nhibernate,fluent-nhibernate,generator,Nhibernate,Fluent Nhibernate,Generator,我想(通过Fluent NHibernate)设置一个要生成的Id:assigned。 映射Id是包含在实体内组件中的属性,如下所示: public class Group { public Group() { } public Group(GroupIdentifier identifier) { GroupIdentifier = identifier; } [DataMember] public virtua

我想(通过Fluent NHibernate)设置一个要生成的Id:assigned。 映射Id是包含在实体内组件中的属性,如下所示:

public class Group
{
    public Group()
    {
    }

    public Group(GroupIdentifier identifier)
    {
       GroupIdentifier = identifier;
    }

    [DataMember]
    public virtual GroupIdentifier GroupIdentifier { get; set; }

    [DataMember]
    public virtual IList<X> Objects { get; set; }
}

public class GroupIdentifier
{
    protected ProtectionGroupIdentifier()
    {
    }

    [DataMember]
    public virtual Guid GroupGuid 
    { get; set; }

}
公共类组
{
公共组()
{
}
公共组(组标识符)
{
组标识符=标识符;
}
[数据成员]
公共虚拟组标识符组标识符{get;set;}
[数据成员]
公共虚拟IList对象{get;set;}
}
公共类组标识符
{
受保护的ProtectionGroupIdentifier()
{
}
[数据成员]
公共虚拟Guid组Guid
{get;set;}
}
我使用以下代码定义实体id:

.Override<Group>(obj => obj.Id(x => x.GroupIdentifier.GroupGuid).GeneratedBy.Assigned())
.Override(obj=>obj.Id(x=>x.GroupIdentifier.GroupGuid).GeneratedBy.Assigned())
当我尝试保存实体时,出现以下错误: 抛出异常。NHibernate.PropertyNotFoundException:NHibernate.PropertyNotFoundException:在类中找不到属性“GroupGuid”的getter

如果我将GroupGuid移动到Group Entity并设置Id,它就会工作。 但我需要它在GroupIdentifier组件中。
请注意。

一旦将GroupGuid封装在GroupIdentifier类中,您就不再映射guid类型,而是一个自定义类型。NHibernate需要知道如何将该自定义类型映射到数据库。你需要通过使用NHibernate告诉它怎么做

要了解有关NHibernate类型系统的更多信息,请阅读。谷歌搜索可以为你提供

但是,由于您计划将其用于ID属性,因此最好仔细检查您的要求:。显然这不是个好主意