Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq 在不将数据保存回数据库的情况下更新实体_Linq_Entity Framework - Fatal编程技术网

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)
并且属性是只读的(公共获取、私有/受保护集,以便于比较)。如果要解决问题,请创建一个真实类型并设置其属性,而不是获取数据并生成匿名对象