Mysql
 sql >> Base de données >  >> RDS >> Mysql

Héritage de classe avec .NET EF4.1 + MySQL

J'ai été confronté au même problème aujourd'hui, la différence est que je ne compte pas sur Code First pour créer les tables pour moi, je les crée manuellement au fur et à mesure.

J'ai suivi la description donnée ici et je me suis retrouvé sur la même erreur que vous, j'ai créé manuellement un champ "Discriminator" sur ma table et changé son type en MEDIUMTEXT mais le fournisseur a insisté sur le fait que je fournissais en quelque sorte une propriété MaxLength, même si MEDIUMTEXT n'a pas MaxLength comme VARCHAR , je suppose que cela doit être un bogue du fournisseur.

Eh bien, pour contourner ce problème, j'ai utilisé une API fluide pour indiquer manuellement le nom de la colonne de discriminateur (que je viens de conserver comme "Discriminateur") et les valeurs que EF devrait attendre de la colonne de discriminateur, dans votre cas, ce serait :

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

J'ai changé le type de ma colonne de discriminateur en VARCHAR(50) sans problème apparent, cela fonctionne bien pour moi maintenant. L'alternative pour moi serait de migrer vers un autre ORM qui est tout simplement trop de travail, j'attendrai les prochaines versions du fournisseur MySql et testerai s'ils ont corrigé cela, en attendant je m'en tiendrai à cette solution.