У меня действительно интересный случай: в двух процессах покупки я частично показываю общую стоимость заказа и цены доставки.
Это частичное представление отображается действием ShowCartDiscountsPrices
.В конце мне нужно вставить используя Entity Framework в базу данных MinDeliveryPrice
, MinDeliveryPriceDDS
, DeliveryPrice
, DeliveryPriceDDS
.
Странная проблема состоит в том, что в двух случаях на прошлой неделе в моей базе данных SQL Server у меня было значение только для DeliveryPrice
, И ЧТО-ТО ДРУГИЕ ТРИ КОЛОННЫ равны нулю в моей базе данных SQL Server.
И когда я смотрю на проблему и делаю заказ с теми же статьями, например, через час после этого все в порядке, и все четыре столбца заполнены, и за этот период никто не внес никаких изменений в базу данных.,
Мне интересно, в чем может быть проблема, могу ли я написать какой-нибудь сценарий для регистрации, чтобы увидеть, если какие-то ошибки происходят в SQL Server или IIS, может быть?
public ActionResult ShowCartDiscountsPrices(OrderDiscountPriceModel model, bool? ischange, int? deliverypreference)
{
var cart = ShoppingCart.GetCart(WebsiteContext.CurrentUser != null ? (int?)WebsiteContext.CurrentUser.UserID : null);
decimal mindeliveryprice = 0;
decimal mindeliverypricedds = 0;
if (deliverypreference != null || Session["DeliveryPreference"] != null)
{
var parsedelprice = deliverypreference.HasValue ? deliverypreference.Value == 1 ? Decimal.TryParse(Settings.GetSettingByName("Eshop_SpeedyMinDeliveryPrice"), out mindeliveryprice) :Decimal.TryParse(Settings.GetSettingByName("Eshop_HomeMinDeliveryPrice"), out mindeliveryprice) : Decimal.TryParse(Session["MinDeliveryPrice"].ToString(), out mindeliveryprice );
var parsedelpricedds = deliverypreference.HasValue ? deliverypreference.Value == 1 ? Decimal.TryParse(Settings.GetSettingByName("Eshop_SpeedyMinDeliveryPriceDDS"), out mindeliverypricedds) : Decimal.TryParse(Settings.GetSettingByName("Eshop_HomeMinDeliveryPriceDDS"), out mindeliverypricedds) : Decimal.TryParse(Session["MinDeliveryPriceDDS"].ToString(), out mindeliverypricedds );
decimal deliveryprice;
decimal deliverypricedds;
ShoppingCartHelper.CalculateArticlesDeliveryPrice(mindeliveryprice, mindeliverypricedds, cart.ComputeTotalTransport(), cart.ComputeTotalTransportDDS(), out deliveryprice, out deliverypricedds);
model.DeliveryPrice = deliveryprice;
model.DeliveryPriceDDS = deliverypricedds;
model.DeliveryPreference = deliverypreference.HasValue ? deliverypreference.Value : (int)Session["DeliveryPreference"];
model.MinDeliveryPrice = mindeliveryprice;
model.MinDeliveryPriceDDS = mindeliverypricedds;
model.FinalSum += deliverypricedds;
}
else
{
if (isFromLastStep != null && bool.Parse(isFromLastStep.ToString()) == true)
ViewBag.IncludeDelivery = true;
}
if (deliverypreference != null)
{
Session["DeliveryPreference"] = deliverypreference;
Session["MinDeliveryPrice"] = mindeliveryprice;
Session["MinDeliveryPriceDDS"] = mindeliverypricedds;
}
ViewData.TemplateInfo.HtmlFieldPrefix = "OrderDiscoutPrice";
return PartialView("_CartDiscountsPrices", model);
}
А вот моивспомогательные функции, которые выполняют только перебор коллекции со статьями и рассчитывают общую стоимость доставки.
public decimal ComputeTotalTransport()
{
decimal totalarticletransport = 0;
decimal articletransport;
foreach (var article in lineCollection)
{
if (decimal.TryParse(article.Article.Transport.ToString(), out articletransport))
{
totalarticletransport += article.Article.Quantity * articletransport;
articletransport = 0;
}
}
return totalarticletransport;
}
public decimal ComputeTotalTransportDDS()
{
decimal totaltransportdds = 0;
decimal articletransportdds;
foreach (var article in lineCollection)
{
if (decimal.TryParse(article.Article.TransportDDS.ToString(), out articletransportdds))
{
totaltransportdds += article.Article.Quantity * articletransportdds;
articletransportdds = 0;
}
}
return totaltransportdds;
}