Получение данных из модели, состоящей из нескольких таблиц, в отношении «один ко многим» - PullRequest
0 голосов
/ 02 марта 2010

У меня относительно простой вопрос о моделях asp.net MVC.

У меня есть модель, основанная на двух таблицах, которые связаны отношением один-ко-многим.

таблица AnimalGroup (ID, имя)

таблица AnimalSubGroup (идентификатор, имя, AnimalGroupID)

Каждая AnimalGroup имеет любое количество AnimalSubgroups.

Как перебрать каждую группу AnimalSubGroup для AnimalGroup и получить AnimalSubGroup.name (например)? Я новичок в asp.net MVC и следую различным учебным пособиям, но, хотя они отлично подходят для настройки базового приложения и получения результатов из одной таблицы, я застрял в том, как получить результаты из нескольких таблиц, связанных в одной модели. Я видел ссылки на ViewModel в качестве решения, но кажется, что ViewModel более полезен для помещения данных из двух несвязанных таблиц в одно представление.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 02 марта 2010

Возможно, вам стоит взглянуть на оператор запроса LINQ SelectMany. Это повторяет отношения таблицы данных «один ко многим». Обратите внимание, что вы можете связать вызовы SelectMany:

var mymanyselections = datacontext.parenttable.SelectMany(l=>l.Name).SelectMany(m=>m.Name);

Предполагается, что в таблицах данных есть связи по внешнему ключу.

0 голосов
/ 02 марта 2010

Во-первых. У вас есть внешние ключи, определенные в вашей базе данных? Если да, генератор модели edmx определит все связи. Если нет, сделайте это прямо сейчас. Когда это будет сделано, вы можете выбрать название подгруппы:

  1. Взяв это прямо из контекста:

    context.AnimalSubGroupSet.Where (sg => sg.AnimalGroupID = requiredAnimalGroupID) .Select (sg => sg.Name) .ToList;

  2. Получение из AnimalGroup:

    animalGroup.AnimalSubGroups.Select (sg => sg.Name);

Этот код может нуждаться в корректировке, но они не должны быть сложными.

...