sql >> Databasteknik >  >> RDS >> Mysql

Klassarv med .NET EF4.1 + MySQL

Jag stod inför samma problem idag, skillnaden är att jag inte litar på Code First för att skapa tabellerna åt mig, jag skapar dem manuellt allt eftersom.

Jag har följt beskrivningen här och jag hamnade på samma fel som du, jag har manuellt skapat ett "Diskrimineringsfält" på mitt bord och ändrat dess typ till MEDIUMTEXT men leverantören insisterade på att jag på något sätt tillhandahåller en MaxLength-egenskap, även om MEDIUMTEXT inte har någon MaxLength som VARCHAR , jag antar att detta måste vara en bugg hos leverantören.

Nåväl, för att komma runt detta har jag använt flytande API för att manuellt tala om namnet på diskriminatorkolumnen (som jag bara behöll som "Diskriminator") och värden som EF bör förvänta sig från diskriminatorkolumnen, i ditt fall skulle detta vara:

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"));
}

Jag har ändrat typen av min diskriminatorkolumn till VARCHAR(50) utan några uppenbara problem, det fungerar bra för mig nu. Alternativet för mig skulle vara att migrera till en annan ORM vilket bara är för mycket jobb, jag väntar på nästa versioner av MySql-leverantören och testar om de har fixat detta, under tiden kommer jag att hålla mig till den här lösningen.




  1. Hur man använder FILEGROUPPROPERTY() i SQL Server

  2. MySQL:Kan inte använda SIGNAL i Trigger

  3. Ett sätt att extrahera data från ett DateTime-värde utan sekunder

  4. IntentService fryser mitt applikationsgränssnitt