Dwa primary keys w tabeli z użyciem entity framework code first

0

Mam problem z ustaleniem dwóch primary keys w jednej tablicy, to co jest w internecie nie chce mi działać, nie wyrzuca błędów a po prostu ignoruje.

 public class Etap
    {
        [Key]
        [Column(Order =1)]
        public int EtapId { get; set; }
        [Required]
        public string NazwaEtapu { get; set; }
        [Required]
        public Czynnosc Czynnosc { get; set; }
        public int NumerEtapu { get; set; }
        [Required]
        public ListaSkladnikow ListaSkladnikow { get; set; )
        [Key]
        [Column(Order =2)]
        public virtual Podprzepis Podprzepis { get; set; }
    }

chcę aby columna EtapId była primary key a kolumna Podprzepis żeby była primary /foreign key. Z góry dzięki za pomoc ;)

0

Po 1. Wiesz coc chcesz zrobić?
Po 2. Dlaczego chcesz to zrobić?
Po 3. Wiesz czym jest primary key i jakie są jego własności?

2

Nie możesz mieć dwóch primary keys w jednej tabeli.

0

Jak to nie można mieć dwóch primary key??? Chcę mieć w tabeli obiekty typu. (PK1 =1, PK2=1), (PK1=1, PK2=2), (PK1=1,PK2=3), (PK1=2,PK2=2) ..... itd. Aby przedstawić bliżej koncepcję, chcę aby każdy z podprzepis składał się z etapów, kolejność etapów jest istotna. Pierwszy podprzepis na 10 etapów od 1 do 10. Drugi podprzepis ma 5 etapów od 1 do 5 itd. Wydaje mi się że to jest tak samo jak prosty system fakturowy, faktura i pozycja faktury.

2

Dwa klucze główne, a klucz główny na dwóch kolumnach to zasadnicza różnica.

0

OK to może jeszcze jakaś podpowiedź, i w sumie też mnie ciekawi jaka jest różnica?

0

No nie wiem przejrzałem całe i nie znalazłem odpowiedzi na moje pytanie. Udało mi się zrobić ten "dwuczęściowy" klucz poprzez

 protected override void OnModelCreating(ModelBuilder modelBuilder)
            {

                modelBuilder.Entity<Etap>()
                  
                  .HasKey(c => new { c.EtapId, c.IdPodprzepis });
                 
            } 

Ale musiałem zrobić kolejny atrybut typy int, który jeszcze musiałbym ustawić jako klucz obcy. A taki już jest w postaci obiektu Podprzepis w klasie Etap. Ale z tego atrybutu już nie mogę tego zrobić nie wiem dlaczego wyskakuje mi error: The property 'Etap.Podprzepis' is of type 'Podprzepis' which is not supported by current database provider. Either change the property CLR type or ignore the property using the '[NotMapped]' attribute or by using 'EntityTypeBuilder.Ignore' in 'OnModelCreating'.

Może czegoś nie rozumiem z tymi obiektami które stają się kolumnami ale byłoby chyba logiczne że jak taki obiekt jest foreign key to szybko przerobić go na primary i wszystko rozwiązane. Mam nadzieje że ktoś zrozumie o co mi chodzi ;)

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