私は現在4つのテーブルを持っています。
製品、カテゴリ、サブカテゴリ、製品サブカテゴリ。
カテゴリには、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
ProductSubCategory テーブル
Id ProductId SubCategoryId Other
-------------------------------------------------------
1 1 1 NULL
2 1 2 NULL
3 1 NULL Other Sub Cat
現在、Product と SubCategory が OneToMany の関係にある別のクラスに ProductSubCategory があります。
製品クラス
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」と入力する必要があります
これのより良い方法はありますか?
ありがとう!
編集:タイプミスを修正