Я прочитал посты здесь и не могу найти ответы на эврики, так что вот что у меня есть.Linq to SQl не передает изменения обратно в базу данных.
Вот мой код.Что-нибудь выделяется?Вызов dc.GetChangeSet показывает 0 изменений.Что мне не хватает?Я вижу, что новые значения из "setting" устанавливаются в свойствах объекта cs.SettingID является первичным ключом в моей таблице и отображается как PK в dbml, так что это не проблема.
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 Insert при dc.SubmitChanges это ошибки из-законфликтовать.Он пытается вставить, а не обновлять ...
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