2013-04-14 2 views
1

FluentNHibernate로 연구를 시작했지만 큰 어려움을 겪었습니다. 이 내 객체 :FluentNHibernate this id is not

public class RegionMap : ClassMap<Region> 
{ 
     public RegionMap() 
     { 
      Table("tbRegion"); 
      Id(x => x.Id) 
       .Column("Num_ID"); 
      Map(x => x.Name) 
       .Column("Des_Name") 
       .Not.Nullable(); 
      HasMany<City>(x => x.ListCity) 
       .Inverse() 
       .Cascade.SaveUpdate() 
       .AsBag(); 

     } 
    } 

public class CityMap : ClassMap<City> 
    { 
     public CityMap() 
     { 
      Table("tbCity"); 
      Id(x => x.Id) 
       .Column("Num_ID"); 
      Map(x => x.Name) 
       .Column("Des_City") 
       .Not.Nullable(); 
     } 
    } 

지금까지 내가 괜찮을 것 같아요 :

public class Region 
{ 
    public virtual Int64 Id { get; set; } 
    public virtual string Name { get; set; } 
    public virtual IList<City> ListCity { get; set; } 
    public Region() 
    { 
    ListCity = new List<City>(); 
    } 
} 
public class City 
{ 
public virtual Int64 Id { get; set; } 
public virtual string Name { get; set; }   
} 

여기에 매핑합니다. 내 결과

Num_ID Des_Name

1 미나스 제 라이스

Num_ID Des_City REGION_ID에서

List<City> lcity = new List<City>(); 
lcity.Add(new City() 
{ 
    Name = "Belo-Horizonte" 
}); 
Region region = new Region() 
{ 
    ListCity = lcity, 
    Name = "Minas Gerais" 
}; 
Repository.Connect(s => s.Save(region)); 

봐 : 나는 매핑을 테스트하는 간단한 코드를 데이터베이스 를 생성하는 최대 절전 모드를 소유하는 데 사용

1 벨로 호라이즌 NULL

왜 채워지지 않았습니까? REGION_ID ??

감사합니다.

답변

1

당신은 REGION_ID와 함께 무엇을 가르쳐야 만합니다. 당신의 매핑은 그것에 대해 말하지 않습니다.

확실하지 내가 얻을 생각 무엇 하나가 -하지만 그래서 대부분의 아마 당신이 RegionMap이 같은 것을 사용합니다, 그것은 같은 도시 테이블의 지역 외래 키를 찾습니다 :

 HasMany<City>(x => x.ListCity) 

      // Provide column key to reference by 
      .KeyColumnNames.Add("REGION_ID") 

      .Inverse() 
      .Cascade.SaveUpdate() 
      .AsBag();