0

私は他のプロパティの画像のリストに加えて持っているエンティティハウスを持っています。すべての画像は、jsトリミング技術を使用して1つずつ単一のアクションとしてアップロードされます。

更新: 1つの家に多くの画像を含めることができます。

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を使用してこれらのオブジェクトをマップする方法は?

ありがとう

4

2 に答える 2

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" />

imagesテーブルに主キーがあり、ドメインオブジェクトにIdプロパティがないため、id-mappingにはname-attributeがないはずです。

于 2012-07-18T08:59:20.500 に答える
0

エンティティを宣言してから、マッピングファイルでImageをクラスHouseIdのエンティティに関連付けるだけです。Housedbに外部キーが必要です。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);
        ....
    }
}   
于 2012-07-18T09:06:57.060 に答える