製品と画像エンティティの間には1対多の関係があります。私が達成しようとしているのは、FluentマッピングまたはLinqToNHibernateを使用して、製品エンティティのメインイメージをマッピングすることです。
私のクラス:
public class Product {
public virtual int Id { get; set; }
public virtual IList<Image> images { get; set; }
}
public class Image {
public virtual int Id { get; set; }
public virtual Product Product { get; set; }
public virtual bool IsMain { get; set; }
}
私のマッピング:
public class ProductMap : ClassMap<Product> {
public ProductMap() {
Id(x => x.Id);
HasMany(x => x.images).KeyColumn("id_product");
}
}
public class ImageClassMap : ClassMap<Image> {
public ImageClassMap() {
Table("product_image");
Id(x => x.Id);
References(x => x.Product, "id_product");
Map(x => x.IsMain).Column("is_main");
}
}
私は次のようにQueryOverでこれを達成することができました:
Image imageAlias = null;
var product = session.QueryOver<Product>()
.Where(x => x.Id == 2)
.Left.JoinQueryOver(x => x.images, () => imageAlias, x => x.IsMain)
.SingleOrDefault();
FluentマッピングまたはLinqToNHibernateを使用して、IsMainプロパティがtrueでMainImage
あるクラスにプロパティを含めることは可能ですか?Product