Я пришел к очень досадной аномалии (с моей точки зрения) при программировании системы онлайн-заказов.
У меня есть две таблицы, которые связаны в модели ado. net модель:
- OrderEntries: здесь хранятся основные данные заказа, такие как ссылка на пользователя, дата заказа и некоторые другие вещи ...
- OrderItems: это соединяется с OrderEntries с помощью orderid и имеет несколько поля для хранения заказанных товаров, такие как название товара, цена, штука и т. д. c ...
Я знаю 2 способа соединить их вместе:
- Список oi_list = ctx.OrderItems.Where (x => x.orderid == id) .ToList (); // тогда я могу делать со списком все, что захочу, например oi_list.Sum (...);
- 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 приложение, чтобы оно снова заработало на некоторое время. Поскольку он только теряет соединение, иногда отладка практически невозможна (с моей точки зрения).
// могут быть опечатки, поскольку я просто набрал каждый код, а не скопировал, это не проблема
У кого-нибудь есть идеи, почему это происходит со мной? Что я здесь не так делаю? Было бы хорошо узнать, так как второй метод немного легче.