LINQ с Entity Framework - основной вопрос - PullRequest
1 голос
/ 07 января 2011

Я пытаюсь изучить linq to sql / objects как можно быстрее. У меня есть база данных с таблицей категорий и таблицей sub_category. Категория может иметь много подкатегорий. В качестве урока я получаю список категорий. Пользователь вводит первичный ключ из отображаемой категории, а затем я хочу отобразить все подкатегории.

Отображать категории было легко ... Но Entity Framework удалил внешние ключи из подкатегории! Я ожидаю увидеть 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 Ответ

1 голос
/ 07 января 2011

Попробуйте это:

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.Это делает его намного более читабельным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...