model danych

0

Na podstawie poniższej klasy zostanie utworzona tabela poprzez wykorzystanie funkcji DbSet<Kurs>. Mam dla was pytanie. W jakiem celu zostało stworzone ostatnie pole w tej tabeli - public virtual Kategoria kategoria {get; set;} ???? (Kategoria to nazwa innej klasy na podstawie, której też zostanie utworzona tabela). Oto kod:

public class Kurs
{
    public int KursId { get; set; }  //klucz główny
    public int KategoriaId { get; set; }  //klucz obcy
    [Required(ErrorMessage = "Wprowadź nazwę kursu!")]
    [StringLength(50)]
    public string TytulKursu { get; set; }
    [Required(ErrorMessage = "Wprowadź nazwę autora!")]
    [StringLength(50)]
    public string AutorKursu { get; set; }
    public DateTime DataDodania { get; set; }
    [StringLength(50)]
    public string NazwaPlikuObrazka { get; set; }
    public string OpisKursu { get; set; }
    public decimal CenaKursu { get; set; }
    public bool Bestseller { get; set; }
    public bool Ukryty { get; set; }

    public string OpisSkrocony { get; set; }

    public virtual Kategoria kategoria { get; set; }
}
1

Własność po prostu mówi, że kurs posiada jedną kategorię. Kategoria to nazwa innej klasy: encji, czyli tak kolokwialnie mówiąc np. tabelki z bazy danych.
Własność Kategoria mówi o związku kategorii z kursem. Dodatkowo virtual pomoże wesprzeć lazy loading.

Wewnątrz encji Kategoria zapewne jest wpisane: public virtual ICollection<Kurs> Kursy { get; set; }

0

a dlaczego w klasie kurs jest public virtual Kategoria... a w klasie Kategoria jest public virtual ICollection... ????

0

Bo kurs należy do jednej Kategorii, a Kategoria może posiadać wiele Kursów (dlatego jest jakaś kolekcja - zapewne lista, ale określone bardziej ogólnie, właśnie jako ICollection<Kurs>). Klasyczna relacja 1:N.

0

Ok. Teraz juz rozumiem. Dziekuje wam za pomoc.

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