0

Я пробовал свои руки на NHibernate и Fluent NHiberate. Я написал два класса следующим образом:Картографические продукты и корзина для покупок - NHibernate

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.

ответ

4

Я думаю, вы хотите отношения «многие ко многим». Это может быть сделано в Fluent с отображением, как это:

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

Это создаст таблицу с именем «ShoppingCartToProduct» с двумя внешними ключами столбцов (от одного до Product.Id и от одного до ShoppingCart.Id).

Смежные вопросы