обновить значения в IQueryable не сохраняет в базу данных - PullRequest
1 голос
/ 20 октября 2011

Я пытаюсь обновить значения, которые я использую IQueryable для поиска в linq для классов datacontext, поэтому я пытаюсь:

var records=  dinner.GetRecords(id).WHERE(d=>d.Year == Yearpassed).AsEnumerable()//returns IQUERYABLE<t>
foreach( var record in records)
{
   record.Year='2000'
}
dinner.Save(); //this just does a db.SubmitChanges()

Затем я делаю еще один запрос данных и привязываю его к сетке, и данные записи совпадают

var records=  dinner.GetRecords(id);
gridview1.DataSource =records;
gridview1.DataBind();

public IQueryable<dinners> GetRecords(string id)
{
     return from dinner in db.dinners
        where dinner.id =id
        select dinner
}

1 Ответ

2 голосов
/ 20 октября 2011

Проблема в том, что вы не изменяете исходную коллекцию.Вызов AsEnumarable создает новую коллекцию, и, таким образом, вы меняете список свойств, которые не может видеть исходный контекст данных.

Попробуйте это так ...

foreach( var record in dinner.GetRecords(id).Where(d=>d.Year == Yearpassed))
{
   record.Year='2000';
}
dinner.Save();

По сути, у меня естьпросто удалите часть AsEnumarble ()

Если это не сработает, я подозреваю, что нам нужно увидеть код в вашем методе GetRecords ()

...