null 許容の parentId フィールドによって、それ自身への外部キーを持つカテゴリ テーブルがあります。Entity-Framework では、関係が作成されると、エンティティは関係フィールドなしで生成されます。つまり、Category テーブルで parentId-Id 関係を作成した私の例では、生成された Category エンティティには、int 型の Id プロパティと、Category 型の ParentCategory プロパティがあり、ParentId プロパティはありません。これにより、クエリが難しくなります。
そのため、カテゴリのサブカテゴリを選択したいときに問題があります。そのために以下の方法を使用します。
public IEnumerable<ICategory> GetSubCategories(long? categoryId)
{
var subCategories = this.Repository.Category.Where(c => c.ParentCategory.Id == categoryId)
.ToList().Cast<ICategory>();
return subCategories;
}
しかし、ルートカテゴリを選択したい場合、これは機能しません。これを行う方法は何ですか?
ところで、Linq to Sql のように int 型の Id プロパティ、int 型の ParentId 、Category 型の ParentCategory プロパティでエンティティを生成する方法はあるのだろうか。