0

我正在尝试使用 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使用自引用类别。但我无法解决ShoppingCart问题Product。我也想用MS Sql Server CE 4.0.

4

1 回答 1

4

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

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

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

于 2012-05-14T19:03:04.047 回答