LINQ with Entity Framework - 基本问题

时间:2011-01-07 08:02:40

标签: c# .net linq entity-framework

我正在尝试尽快学习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();
}

??是我被困的地方......我怎么做这个条款?

1 个答案:

答案 0 :(得分:1)

试试这个:

var subcategories = (
    from subcategory in db.sub_category
    where subcategory.category.category_id == categoryId
    select subcategory).ToList();

属性categorycategory_id的名称可能不同。您可以在EF设计器中查看您的模型实际名称。如果缺少category属性,请确保在类别表和子类别表之间存在外键关系。

您还想更改EF设计器中实体和属性的默认名称。例如,为子集合使用复数名称。例如,使用db.SubCategories代替db.sub_category。这使它更具可读性。