0

私はNHibernateとFluent NHiberateを試していました。次のように2つのクラスを作成しました。

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.IdProductsFluent NHibernate

PS:-自己参照カテゴリのマッピングCategoryと使用を試みました。SucCategoryしかし、私は頭を包み込むことができずShoppingCartProduct問題を抱えています。また、使いたいです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...
    }
}

これにより、2 つの外部キー列 (1 つは Product.Id に、もう 1 つは ShoppingCart.Id に) を持つ "ShoppingCartToProduct" という名前のテーブルが生成されます。

于 2012-05-14T19:03:04.047 に答える