У меня есть вопрос, связанный с this one. Я не хочу делать расчет (агрегацию), но мне нужно получить отображаемые значения из ассоциации. В моем коде C# я могу напрямую ссылаться на это значение, потому что ограничение внешнего ключа сделало Linq сгенерирует всю необходимую проводку. Когда я указываю IQueryable как свойство источника данных Gridview и ссылаюсь на то, что не является столбцом первичного объекта в результирующем наборе, я получаю сообщение об ошибке, что столбец не существует. Как новичок в Linq, я предполагаю, что назначение неявно преобразует IQueryable в список, и ассоциации теряются. Мой вопрос в том, что это хороший способ сделать это?Linq to SQL и Gridview Datasource
Я предполагаю, что я могу обойти это, написав параллельный запрос, возвращающий анонимный тип, содержащий все столбцы, которые мне нужны для gridview. Похоже, что сделав это, я буду хранить данные в памяти избыточно, что у меня уже есть. Могу ли я запросить структуры данных в памяти «на лету» при назначении источника данных? Или есть более прямое решение?
Сетью сетки предполагается отображать ассоциации медицинских групп врача, а имя ассоциации находится в таблице поиска.
IQueryable<Physician> ph =
from phys in db.Physicians
//from name in phys.PhysicianNames.DefaultIfEmpty()
//from lic in phys.PhysicianLicenseNums.DefaultIfEmpty()
//from addr in phys.PhysicianAddresses.DefaultIfEmpty()
//from npi in phys.PhysicianNPIs.DefaultIfEmpty()
//from assoc in phys.PhysicianMedGroups.DefaultIfEmpty()
where phys.BQID == bqid
select phys;
alt text http://heeroz.com/phys.jpg
Так, на основании ответа Дениса, я удалил все ненужные вещи из моего запроса. Я подумал, что с самого начала я не могу задать правильный вопрос.
В любом случае на странице показаны данные врача. Я хочу отобразить все членства в медицинской группе в сетке (и позволить пользователю вставлять, редактировать и обновлять филиалы). Теперь я понимаю, что мне не нужно явно вступать в эти другие таблицы - Linq делает это для меня. Я могу получить доступ к номеру лицензии, который находится в отдельной таблице, путем ссылки на него по цепочке дочерних ассоциаций. я не могу ссылаться на имя медицинской группы в GridView, который возвращает меня к моему вопросу:
AffiliationGrid.DataSource = ph.First().PhysicianMedGroups;
Это не работает, потому что med_group_print_name не доступен для GridView:
A field or property with the name 'med_group_print_name' was not found on the
selected data source.
Опять же, медведь со мной, если все слишком очевидно, что я не понимаю Линк ... потому что я этого не делаю.
Да Я понял, что нагрузки могут не понадобиться. Я пересмотрел свой вопрос. – cdonner
или, скорее, сделаю это в ближайшее время. – cdonner
Затем я получаю следующее: Поле или свойство с именем «MedGroupLookup.med_group_print_name» не было найдено в выбранном источнике данных. – cdonner