我的产品和图片实体之间存在一对多的关系。我想要实现的是使用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();
是否可以在MainImage
类中使用Product
属性,其中IsMain属性为true,使用Fluent映射还是LinqToNHibernate?
答案 0 :(得分:0)
是的,你可以试试,
public class Product {
...
public Image MainImage { get; set; }
}
然后是映射,
public ProductMap() {
...
HasOne(product => product.MainImage).KeyColumn("main_image_id");
}