1 対多の関係である、Category と Subcategory の 2 つのモデルがあります。
次に、Subcategory (SubcategoryId as FK) と 1 対 1 の関係を持つ Notice というモデルを取得しました。
ユーザーは、監視したいサブカテゴリを追加します。そのサブカテゴリ内で何かが起こると、彼らは注目されます。
今、私は情報を印刷しようとしているので、ユーザーは次のように、どのサブキャットが監視されているかについての概要を得ることができます:
(icon) Category Y
Subcategory - monitored
Subcategory - monitored
Subcategory - not monitored
(icon) Category X
Subcategory - not monitored
Subcategory - monitored
Subcategory - not monitored
現在、私は次のようにして解決しました:
var SubcatsAndCheckedNotices =
from subcat in db.Subcategories
join notice in db.Notices.Where(x=>x.CompanyId == company.CompanyId) on subcat.SubcategoryId equals notice.SubcategoryId into prodGroup
from item in prodGroup.DefaultIfEmpty()
select new CheckedNoticesViewModel() {CategoryId =subcat.CategoryId, Category = subcat.Category, Subcategory = subcat, Checked = (item.SubcategoryId == null ? false : true) };
これはほとんど機能しますが、問題は、上に示したように印刷する必要があるため、(カテゴリに対して) 個別の選択を行う必要があり、それにより、Icon プロパティなどの他のカテゴリ プロパティへのアクセスが失われることです。私が必要とすること。
私は立ち往生しており、これを行うためのより良い方法があることを知っていますが、それを理解できません。
これが私の完全なモデルです:
public class Category
{
public int CategoryId { get; set; }
public string Icon { get; set; }
public string Title { get; set; }
public ICollection<Subcategory> Subcategories { get; set; }
}
public class Subcategory
{
public int SubcategoryId { get; set; }
public string Title { get; set; }
public int CategoryId { get; set; }
public virtual Category Category { get; set; }
}
public class Notice
{
public int NoticeId { get; set; }
public int SubcategoryId { get; set; }
public virtual Subcategory Subcategory { get; set; }
public int CompanyId { get; set; }
public virtual Company Company { get; set; }
}
助言がありますか?