次の行に沿ったdbスキーマがあります。
製品
- ID
- 商品名
- 説明
- 店舗ブランド
製品バリエーション
- バリエーションID
- 製品番号
- サイズ
- 店舗ブランド
- 価格
予想通り、クラスは次のようになります。
public class Product
{
public virtual int ID { get; set; }
public virtual string ProductName { get; set; }
public virtual string Description { get; set; }
public virtual string StoreBrand { get; set; }
public virtual IEnumerable<ProductVariation> Variations { get; set; }
}
public class ProductVariation
{
public virtual int VariationID { get; set; }
public virtual int ProductID { get; set; }
public virtual Product Product {get; set;}
public virtual string Size { get; set; }
public virtual double Price { get; set; }
}
私はこのようなマッピングクラスを持っています:
public class ProductMapper : ClassMap<Product>
{
public ProductMapper()
{
Id(x => x.ID);
Map(x => x.ProductName);
Map(x => x.Description);
Map(x => x.StoreBrand);
HasMany(x => x.Variations)
.KeyColumn("ProductID");
}
}
public class ProductVariationMapper : ClassMap<ProductVariation>
{
public ProductVariation()
{
Id(x => x.ID);
Map(x => x.ProductID);
Map(x => x.Size);
Map(x => x.Price);
References(x => x.Product)
.Column("ProductID");
}
}
これは一種の作業です...
しかし、私がする必要があるのは、Product.Brands を ProductVariation.Brands と結び付けることです... (逆もまた同様です)
したがって、Product を照会すると、そのブランドの ProductVariations のリストが返されます... (注意、ProductVariation にはクラスにプロパティがありませんが、マッピング用の列があります)
ProductVariation.ID は一意ではありません。キーは ProductVariation.ID と ProductVariation.Brand (データベース上) です。