实体框架代码First MaxLength和FixedLegth(char vs varchar)

Jua*_*DYB 4 c# mysql code-first entity-framework-6

我有一个实体框架CodeFirst模型,我从现有的数据库创建,我想使用DataAnnotations以不同的方式装饰一些char和varchar.

char和varchar之间的区别在于Char具有固定长度并且varchar具有可变长度.

对于Varchar我正在使用[Maxlength(length)]对于char这是正确的方法还是有更好的方法来定义类中的字符串属性被映射为数据库中的char?

Ste*_*ene 12

使用流畅的api,您可以使用IsFixedLength():

//Set StudentName column size to 50 and change datatype to nchar 
//IsFixedLength() change datatype from nvarchar to nchar
  modelBuilder.Entity<Student>()
                    .Property(p => p.StudentName)
                    .HasMaxLength(50).IsFixedLength();
Run Code Online (Sandbox Code Playgroud)

使用注释,您可以指定类型:

[Column(TypeName = "char")]
[StringLength(2)]
public string MyCharField { get; set; }
Run Code Online (Sandbox Code Playgroud)

  • `[StringLength]`这里不正确.应该是`[MaxLength]`,这是服务器端验证.请参阅这篇文章:/sf/answers/400210821/和 (3认同)