我正在尝试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>();
}
}
我想映射Product
和ShoppingCart
,但我不希望ShoppingCart.Id
作为Products
表中的关键字。如何使用Fluent NHibernate
定义地图?
PS: - 我尝试使用自引用类别映射Category
和SucCategory
。但我无法解决ShoppingCart
和Product
问题。我还想使用MS Sql Server CE 4.0
。
答案 0 :(得分:4)
我想,你想要多对多的关系。这可以在Fluent中完成,其映射如下:
public class ShoppingCartMap : ClassMap<ShoppingCart>
{
public ShoppingCartMap()
{
HasManyToMany(x => x.Products).Table("ShoppingCartToProduct");
// Other properties follow...
}
}
这将生成一个名为“ShoppingCartToProduct”的表,其中包含两个外键列(一个到Product.Id,另一个到ShoppingCart.Id)。