Wpis z mikrobloga

Czy poza dodaniem atrybutu [DatabaseGenerated(DatabaseGeneratedOption.Identity)] do właściwości Id powinienem jeszcze coś z tym zrobić, np dodać int Id jako parametr do konstruktora klasy (albo napisać jakąś metodę), czy może atrybut załatwia wszystko i Id tak czy siak będzie ustawione?

#naukaprogramowania #csharp #mssql #entityframeworkcore #aspnetcore
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

autogenerującym się kluczem


@Myrten: O to mi chodzi, ale myślałem że [Key] tylko wskazuje na to, co ma być uznawane za klucz, a nie że go autogeneruje. Co więc daje [DatabaseGenerated(DatabaseGeneratedOption.Identity)] w porównaniu do [Key]?

EDIT pytanie było dosyć ogólne, bo chodzi mi o Id używane w wielu klasach (jak choćby użytkownik).
  • Odpowiedz
@Goglez: [Key] oprócz wskazywania na klucz robi też to samo co [DatabaseGenerated(DatabaseGeneratedOption.Identity)] jak kolumna jest odpowiedniego typu (np. właśnie int) także nic innego oprócz [Key] nie musisz używać do klucza głównego.
  • Odpowiedz
@Goglez:
[DatabaseGenerated(DatabaseGeneratedOption.Identity)] - wartość w danej kolumnie będzie zmieniona tylko podczas dodawania rekordu, nie będzie zmieniana podczas updejtu. Dodajesz go do kolumny, którym chcesz nadać wartość tylko podczas dodawania za pierwszym razem. Np kolumna 'created' z datą rejestracji użytkownika.

[Key] - będzie to klucz główny w tabeli. Jeżeli kolumna nazywa się Id albo jakasNazwaZakończonaId, to nie musisz dodawać tego atrybutu, bo EF automatycznie doda taki klucz (ale dla przejrzystości kodu
  • Odpowiedz