Почему EF рассматривает свойство char как фактическое руководство? - PullRequest
0 голосов
/ 10 ноября 2018

На самом деле у меня есть свойство типа char, которое я использую для хранения строкового значения guid.

Моя текущая настройка:
- MySQL
- EF Code-First
- EF Migration

Модель:

public class Employee  
{  
    public string Id { get; set; }
}  

EF config

public class EmployeeConfiguration : EntityConfiguration<Employee>  
{  
    public EmployeeConfiguration()  
    {  
        HasKey(x => x.Id);  
        Property(x => x.Id)
            .HasColumnType(“char”)
            .HasMaxLength(36)
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);  
    }  
}  

Проблема:
System.FormatException генерируется, если я делаю следующее:
1. Вставьте с идентификатором, который не соответствует формату руководства.
2. Запрос вышеуказанного класса Employee из базы данных, содержащей Id, который не соответствует формату guid.

Если я попытаюсь вставить или выполнить запрос прямо к базе данных с использованием sql (без использования EF), все в порядке. Подскажите, пожалуйста, как мне обойти эту проблему?

Редактировать 1:
Сообщение об ошибке

Guid должен содержать 32 цифры с 4 штрихами (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).

Решение, которое сработало для меня
По предложению «Джейсона Армстронга» я использовал другую длину символа, я пошел с символом (37).

1 Ответ

0 голосов
/ 10 ноября 2018

EntityFramework автоматически отображает CHAR (36) в GUID для MySQL для Отображение типов данных Entity Framework

Попробуйте добавить old guids=true к строке подключения для C # и MySQL Connector: Guid должен содержать 32 цифры с 4 штрихами

...