2012-07-18 5 views
0

다른 속성 목록 이외에 다른 엔티티 하우스가 있습니다. 모든 이미지는 js crop 기술을 사용하여 하나씩 하나씩 작업으로 업로드됩니다.nhibernate 매핑, many to one

업데이트 : 그래서 한 집에는 많은 이미지가있을 수 있습니다.

public House 
{ 
    public Guid Id {get; set;} 
    .... 
    List<Image> Images {get; set;} 
} 

public class Images 
{ 
    public House House {get; set;} 
    public string Path {get;set;} 
    public string Name {get;set;} 
    public string Description {get;set;}  
} 

내 DB 테이블 다음과 같습니다

House 
Id 
Name, ... 
On this side I don't have relation to the Image table 

Image table 
Id 
HouseId 
Path 
Name 
Description 

이 방법은 확인인가? nhibernate orm을 사용하여 이러한 객체를 매핑하는 방법은 무엇입니까?

감사

+0

많은 관계 선박에는 House와 Image 테이블을 연결하고 집 ID와 이미지 ID가 모두 포함 된 다른 테이블이 있어야합니다. 이렇게하면 당신의 집은 많은 이미지를 가질 수 있고, 이미지는 많은 집을 가질 수 있습니다 (당신의 질문을 정확하게 이해한다면). – Freeman

+0

방금 ​​업데이트 된 질문입니다. 나는 그것이 하나의 접근 방식을 필요로한다고 생각한다. 죄송합니다. – Grunf

답변

0

엔티티를 선언하면 매핑 파일에 Image HouseIdHouse 클래스의 엔티티와 연결됩니다. db에 외래 키가 있어야합니다. xml이 이미 여기에 대답 했으므로 유창한 nhibernate 방법을 추가 할 것입니다.

public class House 
{ 
    public virtual int Id { get; set; } 
    public virtual string Name { get; set; } 
    .... 
} 

public class Image 
{ 
    public virtual int Id { get; set; } 
    public virtual House HouseEntity { get; set; } 
    .... 
} 

public class HouseMap : ClassMap<House> 
{ 
    public HouseMap() 
    { 
     Table("House"); 

     Id(x => x.Id).GeneratedBy.Identity();    
     Map(x => x.Name); 
     ..... 
    } 
} 

public class ImageMap : ClassMap<Image> 
{ 
    public ImageMap() 
    { 
     Table("Image"); 

     Id(x => x.Id).GeneratedBy.Identity(); 
     References(x => x.House); 
     //References(x => x.House, "foreignKeyName"); There is also way to reference with specifying foreign key field 
     Map(x => x.Name); 
     .... 
    } 
} 
0

House.hbm.xml :

<bag name="Images" cascade="all-delete-orphan" inverse="true"> 
    <key column="HouseId" /> 
    <one-to-many class="Image" /> 
</bag> 

Image.hbm.xml :

<id type="int" column="Id"> 
    <generator ... /> 
</id> 

<many-to-one name="House" column="HouseId" cascade="none" /> 

당신은 이미지 테이블의 기본 키없이 아이디을 가지고 있기 때문에 속성을 사용하는 경우 id-mapping은 name-attribute이 없어야합니다.