2011-08-01 62 views
1

我有以下映射:Fluent Nhibernate正在添加兩個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); 
     HasMany(x => x.People); 
     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); 
     //Map(x => x.AccountId, "AccountId"); 

     HasManyToMany<PersonRole>(x => x.PersonRoles) 
      .ParentKeyColumn("RoleId") 
      .ChildKeyColumn("PersonId") 
      .Cascade.All() 
      .Table("crm_people_roles_mapping"); 
     References(x => x.Account, "AccountId").Column("AccountId").Cascade.All(); 
     Table("crm_people"); 
    } 

當NHibernate的創建使用的SchemaExport我在我的crm_people表獲得兩個帳戶ID列,這樣的表:

AccountId 
    Account_Id 

任何人都可以擺脫對我是什麼光做錯了?

+2

您需要指定您的帳戶地圖的的hasMany列和它的倒說。 – Phill

回答

1

什麼菲爾在他的批評是代碼

public AccountMap() 
{ 
    ... 
    HasMany(x => x.People) 
     .KeyColumn("AccountId") 
     .Inverse(); 
}