我已阅读这里的帖子,找不到任何尤里卡答案,所以这里是我的。 Linq到SQl不会将更改传播回数据库。LINQ to SQL没有更新db的问题
这是我的代码。有什么突出的东西吗? 对dc.GetChangeSet的调用显示0更改。 我错过了什么?我可以看到来自“设置”的新值被设置为cs对象属性。 SettingID是我表中的主键,并在dbml中显示为PK,所以这不是问题。
Public Shared Function Update(ByVal setting As ClarifireSetup) As Boolean
Dim cs As ClarifireSetup
Try
Using dc As New AdminClarifireSetupDataContext(TripleDESSecurity.Decrypt(SharedData.PortalCnx))
cs = (From d In dc.AdminClarifireSetups
Where d.SettingID = setting.SettingID
Select New ClarifireSetup With {
.SettingID = d.SettingID,
.SettingKey = d.SettingKey,
.SettingValue = d.SettingValue,
.FriendlyName = d.FriendlyName,
.DisplayOrder = d.DisplayOrder
}).FirstOrDefault()
If cs IsNot Nothing Then
cs.SettingID = setting.SettingID
cs.SettingKey = setting.SettingKey
cs.SettingValue = setting.SettingValue
cs.FriendlyName = setting.FriendlyName
cs.DisplayOrder = setting.DisplayOrder
dc.GetChangeSet()
dc.SubmitChanges()
End If
End Using
Return True
Catch ex As Exception
Throw
Finally
If Not cs Is Nothing Then
cs.Dispose()
cs = Nothing
End If
End Try
End Function
编辑: 改变了我的代码,这样,InsertOnSubmit显示1插入,在dc.SubmitChanges它的错误,由于cconflict。它试图插入,不更新......
Public Shared Function Update(ByVal setting As ClarifireSetup) As Boolean
Dim cs As AdminClarifireSetup
Try
Using dc As New AdminClarifireSetupDataContext(TripleDESSecurity.Decrypt(SharedData.PortalCnx))
'cs = (From d In dc.AdminClarifireSetups
' Where d.SettingID = setting.SettingID
' Select New AdminClarifireSetup With {
' .SettingID = d.SettingID,
' .SettingKey = d.SettingKey,
' .SettingValue = d.SettingValue,
' .FriendlyName = d.FriendlyName,
' .DisplayOrder = d.DisplayOrder
' }).FirstOrDefault()
cs = New AdminClarifireSetup
If cs IsNot Nothing Then
cs.SettingID = setting.SettingID
cs.SettingKey = setting.SettingKey
cs.SettingValue = setting.SettingValue
cs.FriendlyName = setting.FriendlyName
cs.DisplayOrder = setting.DisplayOrder
dc.SubmitChanges()
End If
End Using
Return True
Catch ex As Exception
Throw
Finally
If Not cs Is Nothing Then
cs = Nothing
End If
End Try
End Function
有时只是重新创建DBML可以帮助 – Pleun
不,从头重新创建dbml没有帮助。仍然在GetChangeSet中显示0项 –