Discriminator v Code First (TPH)   zodpovězená otázka

C#, Entity Framework

Dobrý den,

měl bych dotaz ohledně EF Code First a TPH dědičnosti, konkrétně jak určit typ a hodnoty ukládané do sloupce "Discriminator" ten je po vytvoření databáze typu nvarchar(128), což je pro mě zbytečně veliká hodnota a chtěl bych třeba char(5) (později ho třeba indexovat) a jak měnit hodnoty pro tento sloupec ?

Děkuji

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak už jsem na to přišel.

Nesmí se používat konfigurace, které se přímo týkají děděného typu u kterého modifikuji diskriminátor, protože ty z nějakého důvodu přepíší chování na defaultní.

Jdou ale použít DataAnotations.

V OnModelCreating pak:

modelBuilder.Entity<BaseClass>()
                .Map(x => x.Requires("ClassType").HasValue("B").HasColumnType("char").HasMaxLength(5))
                .Map<Foo>(x => x.Requires("ClassType").HasValue("FOO"))
                .Map<Bar>(x => x.Requires("ClassType").HasValue("BAR"))
                .Map<FooBar>(x => x.Requires("ClassType").HasValue("FBAR"));

Pak má diskriminátor název "ClassType" a jeho typ je char(5).

A dle tříd nabývá hodnot "B", "FOO", "BAR", "FBAR".

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback