ここで投稿を読んだので、ユーレカの回答が見つからないので、ここにある内容を確認してください。 LinqからSQlへの変更はdbに反映されません。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はcconflictによるdc.SubmitChangesそれエラー時に、1挿入を示し、これに私のコードを変更しました。あなたがカスタムクラスのコードを削除してみて、ちょうどDを選択
...
dc.ClarifireSetups.InsertOnSubmit(cs)
dc.SubmitChanges()
場合によっては、DBMLを再作成することができます – Pleun
いいえ、ゼロからdbmlを作り直すことは役に立ちませんでした。 GetChangeSetにまだ0個のアイテムが表示されています –