映射产品和购物车 - NHibernate

时间:2012-05-14 18:42:30

标签: nhibernate fluent-nhibernate fluent-nhibernate-mapping

我正在尝试NHibernate和Fluent NHiberate。我写了两个课程如下:

public class Product
{
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
    public virtual decimal Price { get; set; }
}

public class ShoppingCart
{
    public virtual int Id { get; set; }
    public IList<Product> Products { get; set; }

    public decimal CartTotal
    {
        get { return Products.Aggregate(0m, (c,x)=>  c + x.Price; ); }
    }

    public ShoppingCart()
    {
        Products = new List<Product>();
    }
}

我想映射ProductShoppingCart,但我不希望ShoppingCart.Id作为Products表中的关键字。如何使用Fluent NHibernate定义地图?

PS: - 我尝试使用自引用类别映射CategorySucCategory。但我无法解决ShoppingCartProduct问题。我还想使用MS Sql Server CE 4.0

1 个答案:

答案 0 :(得分:4)

我想,你想要多对多的关系。这可以在Fluent中完成,其映射如下:

public class ShoppingCartMap : ClassMap<ShoppingCart>
{
    public ShoppingCartMap()
    {
        HasManyToMany(x => x.Products).Table("ShoppingCartToProduct");
        // Other properties follow...
    }
}

这将生成一个名为“ShoppingCartToProduct”的表,其中包含两个外键列(一个到Product.Id,另一个到ShoppingCart.Id)。