C# Fluent Nhibernate映射帮助

C# Fluent Nhibernate映射帮助,c#,fluent-nhibernate,C#,Fluent Nhibernate,域: 公共类帐户 { 公共虚拟int AccountId{get;set;} 公共虚拟int用户标识{get;set;} 公共虚拟字符串主机名{get;set;} 公共虚拟日期时间CreatedOn{get;set;} 公共虚拟bool已删除{get;set;} } 公共阶层人士 { 公众人士() { PersonRoles=新列表(); } 公共虚拟int PersonId{get;set;} 公共虚拟Guid PersonGuid{get;set;} 公共虚拟字符串FirstName{get

域:

公共类帐户
{
公共虚拟int AccountId{get;set;}
公共虚拟int用户标识{get;set;}
公共虚拟字符串主机名{get;set;}
公共虚拟日期时间CreatedOn{get;set;}
公共虚拟bool已删除{get;set;}
}
公共阶层人士
{
公众人士()
{
PersonRoles=新列表();
}
公共虚拟int PersonId{get;set;}
公共虚拟Guid PersonGuid{get;set;}
公共虚拟字符串FirstName{get;set;}
公共虚拟字符串姓氏{get;set;}
公共虚拟字符串电子邮件{get;set;}
公共虚拟字符串密码{get;set;}
公共虚拟字符串SaltKey{get;set;}
公共虚拟int PersonType{get;set;}
公共虚拟日期时间CreatedOn{get;set;}
公共虚拟bool已删除{get;set;}
公共虚拟布尔活动{get;set;}
公共虚拟int?AccountId{get;set;}
公共虚拟ICollection PersonRoles{get;private set;}
公共虚拟帐户{get;set;}
}
映射:

 public class Account
{

    public virtual int AccountId { get; set; }
    public virtual int UserId { get; set; }
    public virtual string HostName { get; set; }
    public virtual DateTime CreatedOn { get; set; }
    public virtual bool Deleted { get; set; }
}

public class Person
{
    public Person()
    {
        PersonRoles = new List<PersonRole>();
    }
    public virtual int PersonId { get; set; }
    public virtual Guid PersonGuid { get; set; }
    public virtual string FirstName { get; set; }
    public virtual string Surname { get; set; }
    public virtual string Email { get; set; }
    public virtual string Password { get; set; }
    public virtual string SaltKey { get; set; }
    public virtual int PersonType { get; set; }
    public virtual DateTime CreatedOn { get; set; }
    public virtual bool Deleted { get; set; }
    public virtual bool Active { get; set; }
    public virtual int? AccountId { get; set; }

    public virtual ICollection<PersonRole> PersonRoles { get; private set; }
    public virtual Account Account { get; set; }
}
publiccountmap()
{
Id(x=>x.AccountId,“AccountId”).Column(“AccountId”);
Map(x=>x.UserId);
映射(x=>x.HostName);
Map(x=>x.CreatedOn);
映射(x=>x.Deleted);
表(“crm_账户”);
}
公众人物地图()
{
Id(x=>x.PersonId).列(“PersonId”);
Map(x=>x.PersonGuid);
Map(x=>x.FirstName);
地图(x=>x.姓氏);
Map(x=>x.Email);
映射(x=>x.Password);
Map(x=>x.SaltKey);
Map(x=>x.PersonType);
Map(x=>x.CreatedOn);
映射(x=>x.Deleted);
Map(x=>x.Active);
HasManyToMany(x=>x.PersonRoles)
.ParentKeyColumn(“RoleId”)
.ChildKeyColumn(“PersonId”)
.Cascade.All()
.Table(“crm_人员_角色_映射”);
//Map(x=>x.AccountId);
参考(x=>x.账户,“账户ID”).列(“账户ID”);
表(“crm_人员”);
}
问题:

使用帐户id保存新人时,除account id字段外,所有内容均保存为OK

一个人不需要有账户就可以存在

我做错了什么


谢谢。

HNibernate不知道如何处理您的帐户ID。在person对象上,您有一个Account和一个AccountId属性。我敢打赌,如果你在保存之前将帐户分配给此人,它就会开始工作


清除AccountId属性。您不需要它。

HNibernate不知道如何处理您的帐户ID。在person对象上,您有一个Account和一个AccountId属性。我敢打赌,如果你在保存之前将帐户分配给此人,它就会开始工作


清除AccountId属性。你不需要它。

当你说去掉AccountId属性时,你是说在域中吗?编辑:啊,明白了,谢谢。已从域中删除,并且似乎正在工作。是。你已经有一个Account属性,它有一个Id。根对象上的Id是多余的,令人困惑。当你说去掉AccountId属性时,你的意思是在域中吗?编辑:啊,明白了,谢谢。已从域中删除,并且似乎正在工作。是。您已经有一个帐户属性,并且它有一个Id。根对象上的Id是多余的,并且容易混淆。
 public AccountMap()
    {
        Id(x => x.AccountId, "AccountId").Column("AccountId");
        Map(x => x.UserId);
        Map(x => x.HostName);
        Map(x => x.CreatedOn);
        Map(x => x.Deleted);
        Table("crm_accounts");
    }

  public PersonMap()
    {
        Id(x => x.PersonId).Column("PersonId");
        Map(x => x.PersonGuid);
        Map(x => x.FirstName);
        Map(x => x.Surname);
        Map(x => x.Email);
        Map(x => x.Password);
        Map(x => x.SaltKey);
        Map(x => x.PersonType);
        Map(x => x.CreatedOn);
        Map(x => x.Deleted);
        Map(x => x.Active);

        HasManyToMany<PersonRole>(x => x.PersonRoles)
            .ParentKeyColumn("RoleId")
            .ChildKeyColumn("PersonId")
            .Cascade.All()
            .Table("crm_people_roles_mapping");

        //Map(x => x.AccountId);
        References(x => x.Account, "AccountId").Column("AccountId");
        Table("crm_people");
    }