linq 在VB Net中尝试从DevExpress GridView更新数据库时出现此错误

sqserrrh  于 2023-05-20  发布在  其他
关注(0)|答案(1)|浏览(111)

错误指出:
[dbo].[PrescriptionPamflet_modified]触发器出错。触发器执行期间引发错误。批处理已中止,用户事务(如果有)已回滚。
我有以下DevExpress网格:

当我按下打印按钮时,它应该更新数据库值并打印报告。
当没有要更新的更改时,一切都正常。

注意:我使用LINQ设置网格的数据源,inPatientID是我用来确定哪个患者的主键变量。myDB是我的DataContext
:网格的数据源来自BindingSourcePrescriptionItems

下面是我调用来加载数据的代码:

Dim patientPrescriptions = From prescription In myDB.PrescriptionPamflets
                               Where prescription.PatientID = inPatientID
                               Select prescription

    BindingSourcePrescriptionItems.DataSource = patientPrescriptions

下面是打印按钮的代码:

BindingSourcePrescriptionItems.EndEdit()
    GridViewPerscriptionPamflet.PostEditor()

    Try
        myDB.SubmitChanges()
    Catch ex As Exception
        DevExpress.XtraEditors.XtraMessageBox.Show(ex.Message.ToString, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
    End Try


    Dim rpt As New XtraReportPrescriptionPamflet(inPatientID)
    rpt.ShowPreview()
    rpt.BringToFront()

注意:只有PackSizeQuantity列是可编辑的,不能/不应该更新主键和外键值。

另外,在网格和SQL Server数据库本身上,PackSize的数据类型是decimalQuantity的数据类型是integer
任何帮助将不胜感激。我在网上找到的几个结果表明,这是一个数据类型不匹配,但我的数据类型完全匹配。我不想使用SQL来更新数据库,因为我们公司正在转向使用LINQ来处理所有事情。

ruarlubt

ruarlubt1#

有两个触发器。我都删了。已删除表并重新创建。修复了我的问题,从那以后就没有了。

相关问题