IQueryable中的更新值不保存到数据库

时间:2011-10-20 14:00:38

标签: c# linq gridview iqueryable

我正在尝试更新使用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()

然后我再次查询数据并将其绑定到gridview,并且记录数据是相同的

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 个答案:

答案 0 :(得分:2)

问题是您没有修改原始集合。调用AsEnumarable正在创建一个新集合,因此您正在更改原始数据上下文无法看到的属性列表。

尝试这样......

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

基本上,我刚刚删除了AsEnumarble()部分

如果这不起作用,那么我怀疑我们应该看看你的GetRecords()方法中的代码