sql >> Base de Datos >  >> RDS >> Mysql

Herencia de clases con .NET EF4.1 + MySQL

Me enfrenté al mismo problema hoy, la diferencia es que no confío en Code First para crear las tablas para mí, las estoy creando manualmente a medida que avanzo.

He seguido la descripción dada aquí y terminé con el mismo error que usted, creé manualmente un campo "Discriminador" en mi tabla y cambié su tipo a MEDIUMTEXT pero el proveedor insistió en que de alguna manera estaba proporcionando una propiedad MaxLength, aunque MEDIUMTEXT no tiene MaxLength como VARCHAR , asumo que esto debe ser un error en el proveedor.

Bueno, para solucionar esto, he usado una API fluida para indicar manualmente el nombre de la columna del discriminador (que mantuve como "Discriminador") y los valores que EF debería esperar de la columna del discriminador, en su caso, esto sería:

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

Cambié el tipo de mi columna discriminadora a VARCHAR(50) sin ningún problema aparente, ahora me funciona bien. La alternativa para mí sería migrar a otro ORM, lo cual es demasiado trabajo, esperaré las próximas versiones del proveedor de MySql y probaré si han solucionado esto, mientras tanto me apegaré a esta solución.