2010-02-10 53 views
1

我填充一個DataGrid與下面的LINQ代碼:的LINQ to SQL不更新,如果我有一個計算列

 Dim myClients = From p In dc.Persons _ 
        Select p 

我可以瀏覽我的DataGrid中,進行更改,然後點擊調用按鈕

 dc.SubmitChanges() 

所有這一切運行良好並更新SQL Server。

然後,我想添加一個額外的列,將顯示基於函數的計算年齡。我用下面的代碼來創建一個PersonAge列,它工作。

 Dim myClients = From p In dc.Persons _ 
       Select New With {p.PersonID, _ 
        p.PersonName, _ 
        p.PersonGender, _ 
        .PersonAge = CalcCurrentAge(p.PersonDOB, p.PersonFirstContactDate, p.PersonFirstContactAge) _ 
        } 

但是,我注意到我不能再成功地將任何更新保存回SQL。

所以我的問題是,我怎樣才能把保存更新正確的第一個LINQ代碼的簡單性,並與包含PersonAge列的第二個LINQ代碼混合以創建一個可計算年齡列的可更新DataGrid?

回答

3

對DataGrid中的數據列進行計算,而不是在Linq語句中進行計算。

http://www.dotnetjohn.com/articles.aspx?articleid=18

+0

嗨羅伯特,我把它從你的答覆,如果想使用LINQ更新,我不能有任何的計算方法爲列?這不僅僅是我錯誤地編寫我的LINQ的情況呢? – Mitch 2010-02-10 11:27:12

+0

林猜測Linq語句中的計算列與數據庫中的任何相應列不匹配,因此整個更新失敗。 – 2010-02-11 15:03:06