2011-04-08 187 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,私營/保護套,使用一個簡單的比較)。如果你想解決你的問題,而不是採取數據和製作一個匿名對象,創建一個真正的類型,並設置屬性。

相關問題