Получение этой ошибки при попытке обновить мою базу данных из DevExpress GridView в VB Net

#vb.net #linq #devexpress #sql-server-2017 #devexpress-gridcontrol

#vb.net #linq #devexpress #sql-server-2017 #devexpress-gridcontrol

Вопрос:

Ошибка гласит: ошибка в [dbo].[PrescriptionPamflet_modified] триггер. Во время выполнения триггера возникла ошибка. Пакет был прерван, и пользовательская транзакция, если таковая имеется, была отменена.

У меня есть следующая сетка DevExpress:

введите описание изображения здесь

Когда я нажимаю кнопку печати, она должна обновить значения базы данных и распечатать отчет. Когда нет ссылок для обновления, все работает нормально.

  • Примечание: я использую LINQ для установки источника данных сетки и inPatientID является переменной prmary key, которую я использую, чтобы определить, с каким пациентом я работаю. 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()
  
  • Примечание: только столбцы PackSize и Quantity доступны для редактирования, поскольку вы не можете / не должны обновлять значения первичного и внешнего ключей.
    Также тип данных для PackSize is decimal и тип данных для Quantity находится integer в сетке, а также в самой базе данных SQL Server.

Любая помощь будет оценена. В нескольких результатах, которые я нашел в Интернете, указано, что это несоответствие типов данных, но мои типы данных совпадают точно. Я не хочу использовать SQL для обновления базы данных, поскольку наша компания переходит на использование LINQ для всего.

Комментарии:

1. Ошибка сообщает вам, что в триггере есть проблема; Я бы начал с этого.

2. Вы используете EF?

3. @Larnu Да, я недавно узнал о триггерах и заметил, что возникла проблема с моим скриптом «СОЗДАТЬ ТАБЛИЦУ». Это привело к появлению двух триггеров. Я удалил таблицу, и теперь все хорошо, спасибо.

4. Что такое EF? @Alex.B

Ответ №1:

Были созданы двойные триггеры. Я удалил их все. Удалил таблицу и создал ее снова. Исправлена моя проблема, и с тех пор ее не было.

Комментарии:

1. Однако, если эти триггеры выполняли бизнес-логику, эта логика теперь потеряна.#

2. Пожалуйста, разверните @Larnu. Я совсем новичок в этом

3. Вы удалили таблицу и, следовательно, триггеры. Эти триггеры сейчас не существуют… Они были там по какой-то причине, нет?

4. @Larnu О, да, мой оригинальный скрипт «Создать таблицу» создал дубликаты триггеров. Но теперь они воссоздаются только один раз, и все хорошо.