Mysql
 sql >> база данни >  >> RDS >> Mysql

Наследяване на класове с .NET EF4.1 + MySQL

Днес се сблъсках със същия проблем, разликата е, че не разчитам на Code First да създаде таблиците вместо мен, а ги създавам ръчно, докато вървя.

Следвах даденото описание тук и се озовах на същата грешка като вас, ръчно създадох поле "Дискриминатор" в моята таблица и промених типа му на MEDIUMTEXT, но доставчикът настоя, че по някакъв начин предоставям свойство MaxLength, въпреки че MEDIUMTEXT няма MaxLength като VARCHAR , предполагам, че това трябва да е грешка на доставчика.

Е, за да заобиколя това, използвах fluent API, за да кажа ръчно името на колоната на дискриминатора (което просто запазих като "Дискриминатор") и стойностите, които EF трябва да очаква от колоната на дискриминатора, във вашия случай това би било:

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

Промених типа на колоната на моя дискриминатор на VARCHAR(50) без очевиден проблем, сега работи добре за мен. Алтернативата за мен би била да мигрирам към друг ORM, което е твърде много работа, ще изчакам следващите версии на доставчика на MySql и ще тествам дали са поправили това, а междувременно ще се придържам към това решение.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL бързо премахва дубликати от голяма база данни

  2. Разлика между използването на РЕФЕРЕНЦИИ със и без ВЪНШЕН КЛЮЧ?

  3. Множество ранга в една таблица

  4. Хибернация:Автоматично създаване/актуализиране на db таблиците въз основа на класове на обекти

  5. Кой е най-големият идентификационен номер, който autoincrement може да произведе в mysql