NHibernate很多很多“其他”专栏

时间:2012-07-02 06:07:36

标签: nhibernate architecture fluent-nhibernate nhibernate-mapping

我目前有4张桌子。

产品,类别,子类别,ProductSubCategory。

类别具有OneToMany SubCategory关系

产品与Category具有OneToOne关系,与SubCategory具有ZeroToMany关系

所以表格看起来像这样

产品表

  Id     Name    CategoryId
-----------------------------
  1      P1      1
  2      P2      2    

类别表

  Id     Name
-----------------    
  1      Food    
  2      Travel  

子类别表

  Id     Name     CategoryId   
------------------------------
  1      Italian  1
  2      Thai     1

ProductSubCategory表

  Id     ProductId     SubCategoryId     Other
-------------------------------------------------------   
  1      1             1                 NULL
  2      1             2                 NULL
  3      1             NULL              Other Sub Cat

目前我在另一个类中有ProductSubCategory,其中Product和SubCategory具有OneToMany关系。

产品类

public class Product
{
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
    public virtual Category Category { get; set; }
    public virtual ICollection<ProductSubCategory> SubCategories { get; set; }

    ...
}

子类别

public class SubCategory
{
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
    public virtual Category Category { get; set; }
    public virtual ICollection<ProductSubCategory> Products { get; set; }

    ...
}

ProductSubCategory类

public class ProductSubCategory
{
    public virtual Product Product { get; set; }
    public virtual SubCategory SubCategory { get; set; }
    public virtual string Other { get; set; }

    ...
}

我想以这种方式访问​​它:“Product.SubCategories [x] .Name”将返回SubCategory名称或“其他”名称

目前要获取名称我必须输入“Product.SubCategories [x] .SubCategory.Name”并获取“其他”名称我必须输入“Product.SubCategories [x] .Other”

有更好的方法吗?

谢谢!

编辑:修正了拼写错误

1 个答案:

答案 0 :(得分:0)

如果要输入较少的内容,只需将投影属性添加到ProductSubCategory: - )

public virtual string Name
{
    get { return SubCategory.Name; }
}
相关问题