sql >> Database teknologi >  >> RDS >> Mysql

Klassearv med .NET EF4.1 + MySQL

Jeg stod over for det samme problem i dag, forskellen er, at jeg ikke er afhængig af Code First til at oprette tabellerne for mig, jeg opretter dem manuelt, mens jeg går.

Jeg har fulgt beskrivelsen givet her og jeg endte på den samme fejl som dig, jeg har manuelt oprettet et "Diskriminator"-felt på mit bord og ændret dets type til MEDIUMTEXT, men udbyderen insisterede på, at jeg på en eller anden måde leverede en MaxLength-egenskab, selvom MEDIUMTEXT ikke har nogen MaxLength som VARCHAR , jeg går ud fra, at dette må være en fejl hos udbyderen.

Nå, for at omgå dette har jeg brugt flydende API til manuelt at fortælle diskriminatorkolonnens navn (som jeg lige har beholdt som "Diskriminator") og værdier, som EF burde forvente fra diskriminatorkolonnen, i dit tilfælde ville dette være:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Vehicle>()
            .Map<Car>(m => m.Requires("Discriminator").HasValue("Car"))
            .Map<Bike>(m => m.Requires("Discriminator").HasValue("Bike"));
}

Jeg har ændret typen af ​​min diskriminatorkolonne til VARCHAR(50) uden tilsyneladende problem, det fungerer godt for mig nu. Alternativet for mig ville være at migrere til en anden ORM, hvilket bare er for meget arbejde, jeg venter på de næste versioner af MySql-udbyderen og tester om de har rettet dette, imens holder jeg mig til denne løsning.




  1. Sådan opretter du indlejret tabel som databaseobjekt i Oracle

  2. Konverter SQL til SQL alkymi

  3. Konfigurer Hibernate til at bruge Oracles SYS_GUID() til primærnøgle

  4. scope_identity vs ident_current