Многократный оператор ADO.NET Entity Framework в предложении where или сгруппированном лямбда-выражении - PullRequest
0 голосов
/ 27 марта 2011

Я новичок в модели ADO.NET Entity Framework. Использование DotNet Framework 3.5

У меня есть две таблицы:

а именно клиентов и города

Таблица клиентов ссылается на столбец с названием города в таблице city (отношение внешнего ключа)

При создании формы win c # я даю пользователю возможность фильтровать клиентов по его выбору (а именно: имя, город, номер и т. Д.). Вот моя структура


using(DataContext dc = new DataContext())  
{  
    IEnumerable cust = dc.customers;  
    if(name != null)    {  
        cust = cust.Where<customers>(c => c.name == name);
    }  
    if(mobile != null)    {  
        cust = cust.Where<customers>(c => c.mobile == mobile);
    }  
    if(city != null)    {
        cust = cust.Where<customers>(c => c.city.cityname == city); //ERROR HERE
    }
}

Я получаю исключение NullPointerException, поскольку метод EntityReference.Load не вызывается. Вполне логичный момент и я на это согласен. Я хотел бы получить несколько советов о том, как вызвать метод load в текущей архитектуре. Можно ли как-то сделать это:

<code>    c.cityReference.Load();
    c.city.cityname == city

Или, может быть, какое-то лямбда-выражение (я новичок в этом), которое вызывает оба утверждения? Не предложения? Я готов изменить текущую архитектуру, если у кого-то есть лучший совет.

1 Ответ

1 голос
/ 27 марта 2011

Попробуйте

IEnumerable cust = dc.customers.Include("city");  

Проверьте этот пост для справки.

...