我正在尝试尽快学习linq to sql / objects。我有一个带有Category表的数据库和一个sub_category表。类别可以有许多子类别。作为一个教训,我得到一个类别列表。用户从显示的类别中输入主键,然后我将显示所有子类别。
显示类别很简单......但实体框架已从子类别中删除了外键!我希望在子类别表中看到一个类别Id(正如SQL服务器数据库模型中那样)。
相反,我有一些CategoryReference属性......我该如何管理?
static void Main(string[] args)
{
BudgieMoneyEntities db = new BudgieMoneyEntities();
var categories = (
from category in db.categories
select category).ToList();
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("Categories:");
Console.ForegroundColor = ConsoleColor.White;
foreach (category cat in categories)
{
Console.WriteLine(string.Format("{0:00} {1}", cat.category_id,
cat.description));
}
int categoryId = WaitForKey();
var subcategories = (
from subcategory in db.sub_category
where subcategory ?? ?
select subcategory).ToList();
}
??是我被困的地方......我怎么做这个条款?
答案 0 :(得分:1)
试试这个:
var subcategories = (
from subcategory in db.sub_category
where subcategory.category.category_id == categoryId
select subcategory).ToList();
属性category
和category_id
的名称可能不同。您可以在EF设计器中查看您的模型实际名称。如果缺少category
属性,请确保在类别表和子类别表之间存在外键关系。
您还想更改EF设计器中实体和属性的默认名称。例如,为子集合使用复数名称。例如,使用db.SubCategories
代替db.sub_category
。这使它更具可读性。