У меня проблемы с проблемой, с которой я столкнулся. Я создаю интернет-магазин, где можно войти в систему и не войти в систему, чтобы добавить продукты в свою корзину. Когда пользователь проверит, пользователь должен будет либо войти в систему, либо зарегистрироваться. Если пользователь входит в существующую учетную запись и у этой учетной записи уже есть корзина с продуктами, необходимо объединить две корзины в одну. Ниже приведены мои две таблицы (BasketTable) и (BasketProductTable).Объединить несколько объектов
public partial class BasketTable
{
public BasketTable()
{
this.BasketProductTables = new HashSet<BasketProductTable>();
this.OrderTables = new HashSet<OrderTable>();
}
public int BasketId { get; set; }
public Nullable<int> UserId { get; set; }
public string SessionId { get; set; }
public Nullable<System.DateTime> Registered { get; set; }
public virtual ICollection<BasketProductTable> BasketProductTables { get; set; }
public virtual UserTable UserTable { get; set; }
public virtual ICollection<OrderTable> OrderTables { get; set; }
}
public partial class BasketProductTable
{
public int BasketProductId { get; set; }
public int BasketId { get; set; }
public int ProductId { get; set; }
public Nullable<int> Quantity { get; set; }
public Nullable<double> TotalSum { get; set; }
public virtual BasketTable BasketTable { get; set; }
public virtual ProductTable ProductTable { get; set; }
}
Мой вопрос в том, что я не уверен, как объединить корзины. Если бы кто-то мог перейти к хорошей статье по этому вопросу или показать какой-то код, тогда я был бы счастлив. Я кодирую в Asp.Net (MVC) и используя Linq для сущности. - Jakob
----- UPDATE ------ Я решил использовать два foreach, содержащие старые и новые корзины. Я проверил, если элемент из новой корзины существовал в старой корзине, тогда я бы обновил ее количеством и totalSum. Если он не существует, я бы создал новый объект с его информацией, а затем удалял все элементы в старом. Я узнал, что элементы не будут созданы/обновлены во время выполнения, поэтому у меня возникли проблемы с проверкой того, был ли продукт создан в foreach, поэтому я создал список, в котором я бы добавил созданные/обновленные продукты на свой productId и зарегистрировал код, если продукт был добавлен в список до создания или обновления. Я надеюсь, что это помогает кому-то.
Вы не должны хранить содержимое корзины в базе данных. Рассмотрите возможность использования javascript и сохраните элементы в localStorage. После входа в систему вы можете получить эти элементы из localStorage. Хранение всего в базе данных не является хорошей идеей, особенно если эти предметы не гарантируются покупателем. –
@John, это не значит, что если у него есть «Модель» в «Корзине», он собирается сохранить ее в базе данных. Он может просто использовать его в качестве ссылочной модели объекта, которая будет передана, и работать с данными. Если он не объявит набор данных для модели, то он создает экземпляр этого в базе данных. – Aizen
, поэтому наличие Javascript для хранения данных не имеет значения и НЕ ДОЛЖЕН И НЕПРАВИЛЬНЫЙ подход в MVC. Мы всегда должны отходить от JS для обработки данных, которые существуют как структура модели. – Aizen