0

製品と画像エンティティの間には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

4

1 に答える 1

0

はい、試すことができます、

public class Product {
    ...
    public Image MainImage { get; set; }
}

そしてマッピング、

public ProductMap() {
    ...
    HasOne(product => product.MainImage).KeyColumn("main_image_id");
}
于 2013-03-12T15:28:31.970 に答える