Body zdarma Java týden
Využij podzimních slev a získej od nás až 40 % bodů zdarma! Více zde
Pouze tento týden sleva až 80 % na Java e-learning!
Avatar
Adam Gajdečka:15. února 11:03

Ahoj,
programuji v Core 2.1 s lazy loading. Chtěl bych do ApplicationUser přidat to, jaké je uživatel pohlaví. Tedy žena x muž (jen do budoucna to musí jít rozšířit kvůli EU...)

Vytvořil jsem si tabulku Genders, jenže to není úplně správně, jelikož jednak jsou to jen 2 hodnoty a prakticky se to měnit nebude a když už, tak v kódu.

  public class ApplicationUser : IdentityUser
    {

        public int? GenderId { get; set; }

        public virtual Gender Gender { get; set; }

}

A jakmile si někdy vytáhnu Usera, tak mám rovnou k dispozici Gender.Name apod. Jak to udělat tak, abych nemusel mít tabulku Genders a zároveň nepřišel o tuto skvělou funkci.

Mi stačí si to někde definovat třeba v listu, jen jak to použít v tom virtual.

Díky

 
Odpovědět 15. února 11:03
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na Adam Gajdečka
vajkuba1234:15. února 14:47

Jde ti o to, abys nemel seznam pohlavi nacitan z databaze? Muzes pro to pouzit enum...

Nahoru Odpovědět 15. února 14:47
No hope, no future, JUST WAR! For world peace Israel must be DESTROYED!
Avatar
JerryM
Člen
Avatar
Odpovídá na Adam Gajdečka
JerryM:16. února 8:06
  1. zahoď .NET core 2.1 a rychle přejdi na 3.0..
  2. pokud se nepletu tak pořád sou oficiálně jen 2 pohlaví a to muž a žena :)) ale pokud chceš nějakej mix typu fliudi, ty co maj pindíka a sou to ženský, ty co nemaj pindíka a sou to chlapy, chlap s pindíkem a jednou koulí, chlap s pindíkem a 2 koulema atd... tak to si budeš muset udělat sám jako textový popis typu List<> :))))))))))
 
Nahoru Odpovědět 16. února 8:06
Avatar
Odpovídá na JerryM
Adam Gajdečka:16. února 10:41

1.) 3.0 není ještě hotový. Je stále preview 2. Tudíž přecházet zatím nikam nebudu.

  1. třeba v Británii mají těch pohlaví myslím 50. Asi to je jejich výmysl, ale kdy to bude v ČR?

Můžu ten list použít nějak v tom public virtual List<Gender> ..??

 
Nahoru Odpovědět 16. února 10:41
Avatar
Odpovídá na vajkuba1234
Adam Gajdečka:16. února 10:43

díky. Na to jsem taky přišel, jenže to má dost problémů. A jednou z věcí je to, jak mi to vrací JSON na API, jelikož používám React JS. Podařilo se mi nakonec to vrátit s hodnotou i s tím názvem, jenže chodí to v jiné struktuře a přepisovat React nechci.

Myslel jsem, že tyto změny provedu jen na backendu a zvenčí to bude vypadat stejně...

 
Nahoru Odpovědět 16. února 10:43
Avatar
JerryM
Člen
Avatar
Odpovídá na Adam Gajdečka
JerryM:16. února 11:33

no udělej si jednoduše class a v něm výčtový typ podle libosti, asi nejlepší je něco ve smyslu "pole" aby se ti k tomu dobře přistupovalo a aby to mělo i indexer. těch 50 pohlaví budeš muset asi nějak pojmenovat to já nevim jak to je na tobě koukni sem

https://stackoverflow.com/…n-of-an-enum
https://docs.microsoft.com/…ration-types

 
Nahoru Odpovědět 16. února 11:33
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na Adam Gajdečka
vajkuba1234:16. února 11:36

Jake problemy s tim byly?

Nahoru Odpovědět 16. února 11:36
No hope, no future, JUST WAR! For world peace Israel must be DESTROYED!
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na JerryM
vajkuba1234:16. února 11:38

Proc pole?

Nahoru Odpovědět 16. února 11:38
No hope, no future, JUST WAR! For world peace Israel must be DESTROYED!
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na Adam Gajdečka
vajkuba1234:16. února 11:41

U enumu pracujes jen s indexem.

Nahoru Odpovědět 16. února 11:41
No hope, no future, JUST WAR! For world peace Israel must be DESTROYED!
Avatar
Odpovídá na vajkuba1234
Adam Gajdečka:16. února 11:42

aktuálně mám v databázi např.

Id: 1, Name: "Muž"

takže server mi vráti pole objektů tedy

[
        {
id: 1,
name: Muž
        }
]

takto to potřebuji vracet.

Jakmile to dám do toho enum, tak jak mi to může vrátit "Muž", když se to bude jmenovat MAN, jelikož je to v kódu a tam to píšu prostě anglicky, ani jinak by to nešlo, když je tam háček.

Takže to je takový hlavní problém. Dělám českou aplikaci.

 
Nahoru Odpovědět 16. února 11:42
Avatar
JerryM
Člen
Avatar
Odpovídá na Adam Gajdečka
JerryM:16. února 11:58

my ti rozumíme, to že to píšeš anglicky je dobře,ale pohlaví se píše Gender ne ?
a když si uděláš indexer tak to bude vypadat jako List<něco> pohlaví a pak se na to ptáš jako
gender["Adam Gajdečka"] a ono ti to vrátí "male" ve formě json což je jen způsob formátování textu ....

 
Nahoru Odpovědět 16. února 11:58
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na Adam Gajdečka
vajkuba1234:16. února 13:06

A co treba pouzit neco jako Dictionary<Enum­s.Gender, string>() ci podobnou variaci?

Je zbytecne to mit v db. Pripadne pis dalsi problemy

Nahoru Odpovědět 16. února 13:06
No hope, no future, JUST WAR! For world peace Israel must be DESTROYED!
Avatar
Adam Gajdečka:16. února 22:49

Tak nakonec jsem to vyřešil jednoduše.

public class ReadOnlyRepository : IReadOnlyRepository
    {
        private readonly ApplicationDbContext _context;

        public ReadOnlyRepository(ApplicationDbContext context) => _context = context;


        public List<Gender> GetGenders()
        {
            List<Gender> genders = new List<Gender>();
            genders.Add(new Gender { Id = 0, Name = "Muž" });
            genders.Add(new Gender { Id = 1, Name = "Žena " });
            return genders;
        }
    }
}

S těch navigation property jsem to virtual Gender musel smazat. Vrací mi to jen to Id a případně jméno dohledám. Nakonec mi to vůbec nevadí, jelikož kompletuje se to vše až u klienta v JS.

Akceptované řešení
+5 Zkušeností
Řešení problému
 
Nahoru Odpovědět  -2 16. února 22:49
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 13 zpráv z 13.