更新实体而不将数据保存回数据库



我创建了一个新的查询,如下所示

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();

我得到一个编译器错误陈述属性或索引器"匿名类型#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)

属性是只读的(public get, private/protected set,便于比较)。如果您想要解决您的问题,而不是获取数据并创建一个匿名对象,而是创建一个真正的类型并在其上设置属性。

相关内容

  • 没有找到相关文章