0

我目前有 4 张桌子。

产品、类别、子类别、产品子类别。

Category 具有 OneToMany SubCategory 关系

Product 与 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

产品子类别表

  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”,它将返回子类别名称或“其他”名称

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

有没有更好的方法?

谢谢!

编辑:修正错字

4

1 回答 1

0

ProductSubCategory如果您想输入更少的内容,只需添加投影属性即可:-)

public virtual string Name
{
    get { return SubCategory.Name; }
}
于 2012-07-02T12:58:01.883 回答