2010-02-10 55 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