0

我有实体房子,除了图像的其他属性列表之外。每张图片都将作为单个动作上传,使用 js 裁剪技术一张一张地上传。

更新: 所以一所房子可以有很多图像。

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

我的数据库表如下:

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

声明您的实体,然后在映射文件中将 ImageHouseIdHouse类的实体相关联。您应该在数据库中有外键。由于 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 回答
0

House.hbm.xml:

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

图片.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 回答