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");
}