如何使用Linq to SQL來僅更新實體的某些字段?如何使用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 - VERSION1
如果我有這樣的(如下圖),然後什麼也沒有發生。沒有錯誤。沒有更新。
Public Sub Update()
dc.Process_PDFs.Attach(Me)
dc.SubmitChanges()
End Sub
Process_PDF.vb - 版本2
如果我有這樣的(如下圖),然後我得到在附加行錯誤:
實體只能附加爲沒有原始狀態,如果修改它聲明一個版本成員或沒有更新檢查策略。
Public Sub Update()
dc.Process_PDFs.Attach(Me,True) '<--- ERRORS OUT HERE'
dc.SubmitChanges()
End Sub
Process_PDF.vb - 版本3
如果我有這樣的(如下圖),然後它完美的作品如果我還更新了文件,但如果我不更新的文件我上的SubmitChanges錯誤線(不管什麼更新檢查設置設爲):
無法將NULL值插入列「文件名」,表「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
您的DataContext是單例,還是它的範圍?並請說明你得到了什麼錯誤。 – jaraics 2011-05-04 06:26:13