Как использовать Linq to SQL для обновления определенных полей только сущности?
Страница ASPX:
Dim pdf As New Dashboard.Process_PDF()
pdf.ID = ID
pdf.Label = rtbLabel.Text
pdf.IsShared = cbxIsShared.Checked
pdf.AccountID = AccountID
If RadUpload1.UploadedFiles.Count > 0 Then '<-- Uploading a new file is optional in Update Form but is required for Insert (Insert works fine)'
Dim imageFile As UploadedFile = Nothing
imageFile = RadUpload1.UploadedFiles(0)
Dim bytes() As Byte = New Byte(imageFile.InputStream.Length - 1) {}
imageFile.InputStream.Read(bytes, 0, CInt(imageFile.InputStream.Length))
pdf.FileName = imageFile.FileName
pdf.FileBytes = bytes
pdf.FileSize = imageFile.ContentLength
pdf.ContentType = imageFile.ContentType
pdf.UploadedBy = RUserName
End If
pdf.Update()
Process_PDF.vb - версия 1
Если у меня есть это (ниже), то ничего не происходит. Нет ошибок. Без обновлений.
Public Sub Update()
dc.Process_PDFs.Attach(Me)
dc.SubmitChanges()
End Sub
Process_PDF.vb - версия2
Если у меня есть это (ниже), то я получаю сообщение об ошибке в строке Attach:
Объект может быть присоединен как измененный без исходного состояния, только если он объявляет член версии или не имеет политики проверки обновлений.
Public Sub Update()
dc.Process_PDFs.Attach(Me,True) '<--- ERRORS OUT HERE'
dc.SubmitChanges()
End Sub
Process_PDF.vb - версия 3
Если у меня есть это (ниже), то оно работает отлично, ЕСЛИ я также обновляю файл, но если я не обновляю файл, я получаю сообщение об ошибке в строке SubmitChanges (независимо от того, какие настройки проверки обновления установлены):
Невозможно вставить значение NULL в столбец 'FileName' , table 'MyDbName.dbo.Process_PDFs'; Столбец не допускает пустых значений. ОБНОВЛЕНИЕ не удается. Заявление было прекращено.
Public Sub Update()
dc.Process_PDFs.Attach(Me)
dc.Refresh(System.Data.Linq.RefreshMode.KeepCurrentValues, Me)
dc.SubmitChanges() '<--- ERRORS OUT HERE IF NO FILE UPDATE'
End Sub