Linq / C # Получение информации из распределительной таблицы - PullRequest
2 голосов
/ 08 декабря 2011

Я недавно боролся с проблемой, связанной с экспозицией данных Linq.Моя задача - извлечь информацию из 3 таблиц.Один, который содержит список ресурсов, а другой - информацию о связанных услугах.Эти две таблицы объединены с соединительной таблицей.Структура:

Resource Table:
ResourceID (PK)
Description

ServiceResources Table (junction table):
ServiceID(FK)
Resource(FK)

Service Table:
ServiceID (PK)
Description

Упрощенная версия выше, таблицы более расширенные.

Итак, вопрос: я сгенерировал специальный объект, который будет содержать всю полезную информацию:

public class ResourceAndService
    {

        public string Resource
        {
            get;
            set;
        }
        public string Service
        {
            get;
            set;
        }(...)

И я хочу заполнить его информацией из запроса linq, который должен возвращать IList:

    public IList<ResourceAndService> ReturnListOfServicesAndResources()
    {
        var dt = (from res in entities.Resource 
                  from service in entities.Service 
                 select
               new ResourceAndService(){
                        Resource = res.ResourceID,
                        Service= ser.ServiceID,
           (...)
               }).ToList();

        return dt;
    }

К сожалению, постоянно, когда я пытаюсь выполнить эту команду, в окне отладки появляются предупреждения, говорящие:

Первое случайное исключение типа 'System.NullReferenceException' произошло в RaportBrowser.DLL

И запрос не завершается.

Есть ли у вас опытс такой проблемой?

1 Ответ

0 голосов
/ 09 декабря 2011

ОК, проблема с исключением нулевого указателя была где-то еще.
Кстати, для вашей информации правильный способ доступа к таблице соединений:

public IList<ResourceAndService> ReturnListOfServicesAndResources()
{
    var dt = (from res in entities.Resource 
                from service in res.Service 
                select
                new ResourceAndService()
                {
                    Resource = res.ResourceID,
                    Service= ser.ServiceID,
                    (...)
                }).ToList();
    return dt;
}
...