2011-08-02 4 views
1

도메인 :유창함 NHibernate에 매핑 도움

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

매핑 :

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

문제 :

계정 아이디 모든 것을 가진 새로운 사람을 절약 acccount ID 필드를 제외하고 확인을 절약 할 수 있습니다.

사람이 존재할 계정이 필요하지 않습니다.

내가 뭘 잘못하고 있니?

감사합니다.

답변

1

HNibernate는 AccountId로 무엇을해야할지 모릅니다. 당신의 person 객체에는 Account와 AccountId 속성이 있습니다. 저장하기 전에 사용자에게 계정을 할당하면 모두 작동하기 시작합니다.

해당 AccountId 속성을 제거하십시오. 너는 필요 없어.

+0

AccountId 속성을 제거한다고 말하면 도메인에서 의미합니까? 편집 : 아, 감사합니다. 도메인에서 제거되어 작동하는 것 같습니다. – izip

+0

예. 계정 속성이 이미 있으며 ID가 있습니다. 루트 객체의 ID는 복잡하고 혼란 스럽습니다. –

+0

이봐, 내 놀라운 대답을 upvote하는 것을 잊지 마세요. :) –

관련 문제