Entity Framework Views и Linq. Где - PullRequest
       35

Entity Framework Views и Linq. Где

0 голосов
/ 14 сентября 2010

У меня есть очень маленькая установка структуры сущности, содержащая только несколько связанных классов / таблиц и представление.Мне нужно иметь возможность извлечь конкретную запись из этого представления, а именно, мне нужно иметь возможность получить запись, которая соответствует двум критериям, у нее есть определенный ProfileID и определенный QuoteID .

Эта строка вызывает проблему:

TWProfileUpchargeTotal upchargeTotals = _context.TWProfileUpchargeTotals.Where(p => p.Profileid == profile.id && p.quoteid == _quote.quoteid).First();

Я перебираю известные мне профили и получаю ихинформация из представления, поэтому profile.id изменяется каждый раз.

При первом выполнении этого кода он получает правильную запись из представления.Второе и третье (и, вероятно, после этого) время, которое он выполняет, извлекает точно такую ​​же запись.

Любая идея, почему или что я здесь делаю неправильно?

Спасибо, заранее.

1 Ответ

3 голосов
/ 14 сентября 2010

Вас укусила LINQ "гоча", называемая закрытием.Следующий пост (и многие другие) о SO подробно описывают это: closure

Что вам нужно сделать, это объявить переменную WITHIN в foreach, который вы пропустили из приведенного выше кода, и назначить профиль.id к этому и используйте это в предложении Where.

foreach(Profile profile in ListOfProfiles)
{
    var localProfile = profile; 
    TWProfileUpchargeTotal upchargeTotals = _context.TWProfileUpchargeTotals.Where(p => p.Profileid == localProfile.id && p.quoteid == _quote.quoteid).First();
}
...