Problem z generowanie klucza glównego w EntityFrameworkCore

0

Siemanko,
Mam problem z generowaniem klucza głównego w EFCore. Wszystkie dane mi się dodają ale klucz główny jest 0 i dlatego mi się rekord nie zapisuje do bazy danych. Ktoś ma jakiś pomysł dlaczego tak może być? Klucz główny dotyczy tabeli OrderDetail

 foreach (var item in cartDetail)
 {
     var orderDetail = new OrderDetail
     {
         CartDetailId = item.Id,
         OrderId = order.Id,
         Quantity = item.Quantity,
         UnitPrice = item.UnitPrice
     };
     await _db.OrderDetails.AddAsync(orderDetail);
                     
 }
 await _db.SaveChangesAsync();
1

Pokaż jeszce jak masz zdefiniowaną tabelę CartDetail. Może zapomniałeś o jakimś [DatabaseGenerated(DatabaseGeneratedOption.Identity)]?

(czy tam modelBuilder.Entity<Foo>().Property(p => p.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);)

0
public class OrderDetail
{
    public int Id { get; set; }
    [Required]
    public int OrderId { get; set; }
    //[Required]
    //public int SizeProductId { get; set; }
    //[Required]
    //public int MaterialId { get; set; }
    [Required]
    public int CartDetailId { get; set; }
    [Required]
    public int Quantity { get; set; }
    [Required]
    public double UnitPrice { get; set; }
    public Order Order { get; set; }
    public CartDetail CartDetails { get; set; }
    //public SizeProduct SizeProducts { get; set; }
    //public Material Materials { get; set; }

}

Czyto o tą definicję chodzi?

0

screenshot-20240605200100.png

0

Jeśli tak jest to dlaczego nie mam dodawanego rekordu do bazy danych?

0

A dostajesz jakis błąd przy zapisywaniu? Zobacz czy wartosc zwracana przez SaveChangesAsync jest rowna lub wieksza od ilosci wstawianych wierszy.

0

Ale ty chcesz aby bazka ci generował ten id czy sam go chcesz ręcznie generować?

2

Jeśli Ty chcesz go generować to musisz gdzieś to generowanie i przypisanie do ID zrobić a jak ma to robić baza to zostanie on dodany przy zapisie. Jak zapiszesz rekord do bazy danych i go pobierzesz znowu to będzie miał nowe id. Na etapie tworzenia obiektu jest na wartości domyślnej. (Czyli 0 dla int)

1 użytkowników online, w tym zalogowanych: 0, gości: 1