Linq 在不将数据保存回数据库的情况下更新实体
我创建了一个新的查询,如下所示Linq 在不将数据保存回数据库的情况下更新实体,linq,entity-framework,Linq,Entity Framework,我创建了一个新的查询,如下所示 var pressData = from press in dataContext.Releases select new { Heading = press.Heading, Descripti
var pressData = from press in dataContext.Releases
select new
{
Heading = press.Heading,
Description = press.Desc,
DatePublished = press.PublishDate.ToString(),
Body = press.BodyContent,
ID=press.ReleaseID,
CreatedBy=press.CreatedBy
};
在后面的代码中,我希望从会话变量更新实体,但不将任何数据保存回数据库。下面是我试图用的代码
var edit = pressData.Where(a => a.Heading == sectionPreview.HeadingContent && a.ID == sectionPreview.tionID).FirstOrDefault();
if (edit != null)
{
//WONT LET ME UPDATE THE Body VALUE
edit.Body = sectionPreview.SectionContent;
}
上述代码的目的是查看pressData并用会话变量(此处未显示)中的新正文替换正文内容,但不是将其保存到db。我希望仅在实体中过滤和更新pressData。因此,在本例中,当我将其绑定到控件时,它将绑定存储在会话中的数据
this.rptSections.DataSource = pressData;
this.rptSections.DataBind();
我收到一个编译器错误,声明
无法将属性或索引器“AnonymousType#1.Body”分配给--它是只读的
我检查了实体模型,没有任何内容是只读的,没有任何字段,没有任何内容。我一定遗漏了什么?匿名类型封装了只读属性集合-有关详细信息,请阅读。编译器将匿名类型重写为构造函数注入,即:
select new
{
Heading = press.Heading,
Description = press.Desc,
DatePublished = press.PublishDate.ToString(),
Body = press.BodyContent,
ID=press.ReleaseID,
CreatedBy=press.CreatedBy
};
实际上被改写为:
new Anonymous`1(press.Heading, press.Desc, press.PublishDate.ToString(), press.BodyContent, press.ReleaseID, press.CreatedBy)
并且属性是只读的(公共获取、私有/受保护集,以便于比较)。如果要解决问题,请创建一个真实类型并设置其属性,而不是获取数据并生成匿名对象