Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dziedziczenie klas z .NET EF4.1 + MySQL

Miałem dzisiaj ten sam problem, różnica polega na tym, że nie polegam na Code First do tworzenia tabel dla mnie, tworzę je ręcznie na bieżąco.

Postępowałem zgodnie z opisem podanym tutaj i skończyłem na tym samym błędzie, co ty, ręcznie utworzyłem pole „Discriminator” w mojej tabeli i zmieniłem jego typ na MEDIUMTEXT, ale dostawca nalegał, aby w jakiś sposób dostarczałem właściwość MaxLength, mimo że MEDIUMTEXT nie ma wartości MaxLength, takiej jak VARCHAR , zakładam, że to musi być błąd dostawcy.

Cóż, aby obejść ten problem, użyłem interfejsu Fluent API, aby ręcznie podać nazwę kolumny dyskryminatora (którą po prostu zachowałem jako „Discriminator”) i wartości, których EF powinien oczekiwać od kolumny dyskryminatora, w twoim przypadku będzie to:

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

Zmieniłem typ kolumny dyskryminacyjnej na VARCHAR(50) bez widocznego problemu, teraz działa dobrze dla mnie. Alternatywą dla mnie byłaby migracja do innego ORM, co jest po prostu zbyt dużo pracy, poczekam na kolejne wersje dostawcy MySql i przetestuję, czy to naprawili, tymczasem pozostanę przy tym rozwiązaniu.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. get_result() nie działa, nawet jeśli włączony jest mysqlnd

  2. Kolejność MySQL według ciągu z liczbami

  3. C# z parametrami INSERT MySQL

  4. Kolumny przyrostu w laraveli

  5. Klucz obcy MySQL, aby umożliwić NULL?