实际上,我有一个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从包含不遵循guid格式的id的数据库中查询上述employee类。
如果我尝试直接使用sql(不使用ef)插入或查询数据库,一切正常。你能指导我如何解决这个问题吗?
编辑1:
错误消息
guid应包含带4个破折号的32位数字(xx-x-x-x-)。
对我有效的解决方案
根据“jasonarmstrong”的建议,我使用了不同的char长度,我使用了char(37)。
1条答案
按热度按时间lnvxswe21#
对于每个实体框架数据类型Map,entityframework会自动将mysql的字符(36)Map到guid
尝试添加
old guids=true
对于每个c#&mysql连接器的连接字符串:guid应该包含32个带4个破折号的数字