Странное поведение при программировании соединений с таблицами БД в c# (Список <RelatedItem>против item.RelatedItem) - PullRequest
0 голосов
/ 16 января 2020

Я пришел к очень досадной аномалии (с моей точки зрения) при программировании системы онлайн-заказов.

У меня есть две таблицы, которые связаны в модели ado. net модель:

  • OrderEntries: здесь хранятся основные данные заказа, такие как ссылка на пользователя, дата заказа и некоторые другие вещи ...
  • OrderItems: это соединяется с OrderEntries с помощью orderid и имеет несколько поля для хранения заказанных товаров, такие как название товара, цена, штука и т. д. c ...

Я знаю 2 способа соединить их вместе:

  1. Список oi_list = ctx.OrderItems.Where (x => x.orderid == id) .ToList (); // тогда я могу делать со списком все, что захочу, например oi_list.Sum (...);
  2. OrderEntries oe = ctx.OrderEntries.First (x => x.orderid == id); oe.OrderItems.Sum () ...

Первый работает совершенно нормально.

Другой иногда работает, иногда нет.

Например, когда я перечисляю заказы на день с чем-то вроде этого:

foreach (var item in ListofOrderEntries)
{
    _res += "<td>" + item.orderid + "</td>";
    _res += "<td>" + item.OrderItems.Sum(x => x.price * x.piece) + "</td>";
}

Это работает какое-то время, затем просто "теряет связь" и получает только ордер, но ничего из соответствующей таблицы. Я должен повторно опубликовать sh приложение, чтобы оно снова заработало на некоторое время. Поскольку он только теряет соединение, иногда отладка практически невозможна (с моей точки зрения).

// могут быть опечатки, поскольку я просто набрал каждый код, а не скопировал, это не проблема

У кого-нибудь есть идеи, почему это происходит со мной? Что я здесь не так делаю? Было бы хорошо узнать, так как второй метод немного легче.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...