【发布时间】:2011-08-31 12:24:38
【问题描述】:
我已阅读此处的帖子,但找不到任何尤里卡答案,所以这就是我所拥有的。 Linq to SQl 不会将更改传播回数据库。
这是我的代码。有什么突出的吗? 对 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 Insert,在 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 会有所帮助
-
不,从头开始重新创建 dbml 并没有帮助。 GetChangeSet 中仍显示 0 个项目
标签: vb.net asp.net-mvc-3 linq-to-sql .net-4.0