代码之家  ›  专栏  ›  技术社区  ›  Alexis Abril

FluentHibernate查找表

  •  1
  • Alexis Abril  · 技术社区  · 15 年前

    这可能是一个容易的,我似乎无法通过。

    我创建了一个“产品”类,其中有一个“附件”列表。每个“附件”只是一个查找表引用的另一个产品。

    表设置:

    Product
    -------
    ProductID int
    Name varchar(200)
    
    AccessoryProduct
    ----------------
    ID int
    ParentProductID int
    ChildProductID int
    

    我希望能够以如下方式访问附件列表:

    foreach(Product p in product.Accessories)
     string s = p.Name;
    

    我要讨论的部分是这个查找的FluentHibernate映射。在我的ProductMap类中,我有以下映射:

    Id(x => x.ProductID);
    Map(x => x.Name);
    HasMany(x => x.Accessories)
     .Table("AccessoryProduct")
     .KeyColumn("ParentProductID")
     .Cascade.None()
     .Inverse()
     .LazyLoad();
    

    这当前正在创建一个查询,该查询在产品表中查找“parentproductid”,而不是查找表(accessoryproduct)。

    有没有一个简单的方法可以方便地映射查找表?

    即使涉及到XML映射,也要感谢您提供的任何帮助。我应该能想出流畅的一面。

    1 回复  |  直到 15 年前
        1
  •  1
  •   JustinT    15 年前

    你需要一种多对多的关系。

    尝试:

     HasManyToMany(x => x.Accessories)
     .Table("AccessoryProduct")
     .ParentKeyColumn("ParentProductID")
     .ChildKeyColumn("ChildProductID")
     .Cascade.None()
     .Inverse()
     .LazyLoad();