Я немного изо всех сил пытаюсь определить, является ли это просто проблемой дизайна и / или как я мог бы решить следующий сценарий с точки зрения кодирования:
В моем проекте я разрешаю пользователю добавить несколько отправленийадреса.Очевидно, что одним из них должен быть адрес доставки.Однако я хочу предложить возможность изменить это на усмотрение пользователя.Поэтому я сохранил адреса доставки в столбце «IsDefaultShippingAddress» (bool).Я имею в виду, что, когда пользователь выбирает адрес доставки по умолчанию, для этой колонки модель передает значение «true».
Теперь в сценарии, когда у пользователя есть существующая доставкаадрес, который выбран по умолчанию, и который хотел бы добавить новый адрес доставки по умолчанию (или повысить существующий адрес доставки по умолчанию), я бы, естественно, оказался в сценарии, когда один и тот же пользователь имеет две (несколько) записи в одной таблицегде 'IsDefaultShippingAddress' равен 'true' - но я хочу, чтобы это был только один адрес (последний продвинутый) в соответствии с характером термина "default".
Поэтому мой вопрос: какмогу ли я убедиться, что все записи, соответствующие определенным критериям (UserID), обновлены до 'IsDefaultShippingAddress' 'false'
, в то время как недавно повышенный адрес доставки (отдельная строка в той же таблице) установлен на 'IsDefaultShippingAddress' 'true'
?
Вот мой код контроллера, в котором проблема не решена:
// POST: /Manage/EditShippingAddress
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult EditShippingAddress([Bind(Include = "ID,UserID,IsDefaultShippingAddress,ShippingAddressCompanyName,ShippingAddressFirstName,ShippingAddressLastName,ShippingAddressAdditional,ShippingAddressStreet,ShippingAddressNumber,ShippingAddressZIP,ShippingAddressCity,ShippingAddressState,ShippingAddressCountry,ShippingInstructions,UpdatedLatitude,UpdatedLongitude,UpdatedLocation")] ShippingAddresses model)
{
// define variables
var userID = User.Identity.GetUserId();
DateTime nowUTC = DateTime.Now.ToUniversalTime();
DateTime nowLocal = DateTime.Now.ToLocalTime();
// pass first name to viewbag for personalization
ViewBag.Personalization = UserManager.FindById(userID).FirstName.ToString();
if (ModelState.IsValid)
{
DATADB.Entry(model).State = System.Data.Entity.EntityState.Modified;
DATADB.SaveChanges();
return RedirectToAction("ShippingAddresses");
}
return View(model);
}