Datarow не находит строку из таблицы - приводит к тому, что ссылка на объект не установлена в экземпляр объекта

111
10

Я пытаюсь найти поданную в моей таблице базы данных. Я сделал это успешно с таблицами, которым требуется только один ключ для поиска, однако в этой таблице есть составной ключ, прикрепленный к нему, поэтому я должен использовать следующий код для передачи в двух ключах

                //Saving quantity edits
// Create an array for the key values to find.
object[] findTheseVals = new object[2];

// Set the values of the keys to find.
findTheseVals[0] = int.Parse(cbo_OrderID.Text);
findTheseVals[1] = int.Parse(txt_orderitemIDtext.Text);

drOrderEdit = dsOrderItem.Tables["OrderItem"].Rows.Find(findTheseVals);

Он принимает два ключа, так как я больше не получаю ошибку, говорящую что-то вроде строки "ожидая, что два ключа получили только один", авария произошла в следующей строке кода, где я получаю объект, не установлен в экземпляр объект "

                //Error is at this begin edit statement
drOrderEdit.BeginEdit();
drOrderEdit["Quantity"] = txt_editquantity.Text;
drOrderEdit.EndEdit();
daEditOrderItem.Update(dsOrderItem, "OrderItem");

Почему нет Датароу? два значения, присвоенные массиву объектов, представляют собой значения, которые содержатся в столбцах первичного ключа и составного ключа.

Здесь сценарий для создания таблицы:

Create Table OrderItem
(
OrderItemID int not null,
OrderID int not null,
Quantity smallint not null,
ProductID INT not null,
CHECK (Quantity > 0 AND Quantity < 51),
CONSTRAINT PK_OIOrderID PRIMARY KEY (OrderID,ProductID),
CONSTRAINT FK_Prod FOREIGN KEY (ProductID)
REFERENCES Product(ProductID)
on delete cascade,
CONSTRAINT FK_Order foreign key (OrderID)
REFERENCES ORDERS (OrderID)
on delete cascade
)

спросил(а) 2021-01-12T10:28:34+03:00 1 неделя, 4 дня назад
1
Решение
113

Таким образом, похоже, что мой скрипт был настроен неправильно.

Линия

CONSTRAINT PK_OIOrderID PRIMARY KEY (OrderID,ProductID),

Должно было

CONSTRAINT PK_OIOrderID PRIMARY KEY (OrderItemID,OrderID), 

Сделали эти изменения, и изменения были приняты.

ответил(а) 2021-01-12T10:28:34+03:00 1 неделя, 4 дня назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема