#c# #entity-framework #list
#c# #entity-framework #Список
Вопрос:
Я получил простую функцию, которая возвращает список DatabaseViewName
public List<DatabaseViewName> GetAllItems(string article)
{
List<DatabaseViewName> visi;
var cus = from s in _entities.DatabaseViewName where
s.articleNr == article select s;
visi = new List<DatabaseViewName>(cus);
return visi;
}
Первый запуск прошел нормально. Я получаю список с желаемыми объектами.
Второй запуск с другой статьей (с большим количеством свойств) по-прежнему содержит 5 элементов списка из первого запуска. Не дополнительно!! Остается только значение свойств… Я ЗНАЮ ПОЧЕМУ, но не могу это исправить! Код правильный, пожалуйста, не пытайтесь сказать мне что-то еще. EntityFrameworke кэширует информацию для экономии времени. Мне нужно отключить это кэширование… Как?
Спасибо!
PS: Не имеет значения Список<> или массив
видите, проблема в этом:
var ese = (from s in _entities.DataBbseViewName where
s.ArticleNr == article select s).ToArray();
в «ese» значение не изменилось. Я могу запускать его 100 раз со 100 различными статьями.
Значения первого запуска будут сохранены.
Комментарии:
1. Сколько записей в базе данных для двух разных статей?
2. и сколько элементов вы получаете в cus при запуске 2-го раза?
3. возможно ли, что вы смотрите на первый экземпляр
visi
и во второй раз тоже? (Вы не изменяете список — вы просто возвращаете его — кстати: не возвращайте списки — возвращайте неизменяемые элементы, такие как массивы или новые списки только для чтения)4. 1 раз в cus, И нет, я не смотрю на первый экземпляр.
5. Как выглядит код, который вы используете для вызова метода getAllItems(string article) с помощью?
Ответ №1:
Понял! Вы можете установить для запроса значение без отслеживания!
var ese = (from s in _entities.DataBbseViewName where
s.ArticleNr == article select s).ToArray().AsNoTracking();
Смотрите