EF为什么将char属性视作实际的向导?

时间:2018-11-10 13:46:59

标签: c# mysql entity-framework ef-code-first ef-migrations

我实际上拥有的是char类型的属性,该属性用于存储GUID的字符串值。

我当前的设置:
-MySQL
-EF代码优先
-EF迁移

型号:

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

EF配置

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.插入一个不符合Guid格式的ID。
2.从数据库中查询上面的Employee类,其中该类的ID不符合GUID的格式。

如果我尝试使用sql直接插入或查询数据库(不使用EF),就可以了。 您能否指导我如何解决此问题?

编辑1:
错误消息

  

向导应包含32位数字和4个破折号(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)。

对我有用的解决方案
根据“ Jason Armstrong”的建议,我使用了不同的字符长度,并使用了一个字符(37)。

1 个答案:

答案 0 :(得分:2)

EntityFramework根据Entity Framework Data Type Mapping自动将CHAR(36)映射到MySQL的GUID

尝试根据C# & MySQL Connector: Guid should contain 32 digits with 4 dashesold guids=true添加到您的连接字符串中