2011-04-08 226 views
0

我创建像下面更新实体不保存数据回

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; 

          } 

代码aboves目的是看pressData和会话变量(这里没有显示)取代的主体内容与新的机构来实现这一点,但不保存到数据库。我希望pressData仅在实体中被过滤和更新。所以当我在这种情况下将它绑定到控件时,它会绑定存储在我的会话中的数据。

this.rptSections.DataSource = pressData; 
       this.rptSections.DataBind(); 

我得到一个编译器错误,指出 属性或索引“AnonymousType#1.Body”不能被分配到 - 它是只读的。

我检查了实体模型,没有任何东西只读,没有任何字段没有任何东西。我肯定错过了什么?

回答

2

匿名类型封装只读属性集合 - 有关更多信息,请阅读here。编译器重写匿名类型作为构造注射,即:

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) 

而且属性为只读(公共的get,私营/保护套,使用一个简单的比较)。如果你想解决你的问题,而不是采取数据和制作一个匿名对象,创建一个真正的类型,并设置属性。

相关问题