У меня есть таблица под названием "Корзина", который имеет составной ключ из 2-х значений:Сформировать уникальный идентификатор (Entity Framework)
public class Cart
{
[Column(Order=0), Key]
public int Id { get; set; }
[Column(Order=1), Key]
public int ProductId { get; set; }
public int Quantity { get; set; }
}
Так, например, тот же ids
«Корзина» может иметь разные ProductIds
(одна тележка с различными продуктами на нем). Из-за этого столба Корзина Id
не является уникальным, я не могу использовать атрибут DatabaseGeneratedOption.Identity
, чтобы спросить EF о создании уникальных идентификаторов.
Когда я вставляю новый объект телеобъекта в базу данных и перебираю продукты в корзине, можно ли спросить EF о создании нового уникального идентификатора только один раз и вернуться на сервер?
int unqiueId = ??(dbcontext.Generate Unique ID For This Table)
foreach (var cartLine in cart.CartLines)
{
Cart cartLinePurchased = new Cart{
Id = uniqueId,
ProductId=cartLine.Product.Id,
Quantity=cartLine.Quantity
};
dbcontext.CartPurchased.Add(cartLinePurchased);
dbcontext.SaveChanges();
cartPurchased = cartLinePurchased;
}
Заранее спасибо.
Какая цель состоит в том, чтобы иметь несколько строк с одним и тем же «ИД»? –
Тот же идентификатор означает ту же самую корзину. Одна тележка (один уникальный идентификатор) с разными Продуктами на ней. Например, тележка с Id = 1, имеет 1,2,3,4,5 productIds на ней; cart с Id = 2, имеет 3,5,7,8 продукта на нем; и т. д. Вот почему я создал составной ключ. –
Как насчет использования Guid? Или иметь отдельную таблицу корзин, которая будет отвечать за предоставление вам этих уникальных номеров? –