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



我正在尝试更新我使用IQueryable来搜索我的linq到类数据上下文的值,我为什么要尝试:

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
}

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

像这样试试…

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

实际上,我只是删除了AsEnumarble()部分

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

最新更新