我实际上拥有的是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)。
答案 0 :(得分:2)
EntityFramework根据Entity Framework Data Type Mapping自动将CHAR(36)映射到MySQL的GUID
尝试根据C# & MySQL Connector: Guid should contain 32 digits with 4 dashes将old guids=true
添加到您的连接字符串中