标签:
这次项目用到了多数据库,在使用Mysql的时候,出现了一些小问题:
MySQL ERROR 1071 (42000): Specified key was too long; max key length is 767 byte MySQL.net
这个问题与Mysql的数据格式有关系,Mysql的默认字符集是Latin1,我在改为utf8之后依旧出现这个问题,后来一同事告诉我这个问题的处理办法:
通过Data Annotation 或者Fluent API进行设置,将字段的长度设定在767byte以内。
具体方法:
1. Data Annotation
public class Store
{
[Key]
[Column(TypeName = "char")]
[MaxLength(50)]
public string StoreID { set; get; }
[Column(TypeName = "char")]
[MaxLength(50)]
public string Name { set; get; }
public string ProductID { set; get; }
public virtual Product Product { set; get; }
}
2. Fluent API
modelBuilder.ComplexType<MetadataSubject>().Property(p => p.Name).HasColumnType("varchar").HasMaxLength(50);
或者通过
public class MetadataSubjectConfiguraiton:ComplexTypeConfiguration<MetadataSubject>
{
public MetadataSubjectConfiguraiton()
{
this.Property(p => p.Name).HasColumnType("varchar").HasMaxLength(50);
}
}
并在配置函数中添加设置负责类型的文件设置。
通过这两种办法可以解决基本问题。至于网上很多地方提到的更改字符集。。。我只能说:呵呵。。。
标签:
原文地址:http://www.cnblogs.com/ArrowTip/p/CodeFirstMysql.html