Entity Framework 4.1代码第一种方法:如何定义属性的长度

Sav*_*dis 24 mapping ef-code-first entity-framework-4.1

正如标题暗示:

怎么可能在代码第一种方法中告诉实体框架4.1,我确实希望某些属性(特别是类型字符串)的长度为256或nvarchar(max),或者......

所以,如果这是我的模型

public class Book{
   public string Title { get; set; } //should be 256 chars
   public string Description {get;set} //should be nvarchar(max)
}
Run Code Online (Sandbox Code Playgroud)

怎么定义?

提前致谢!

Lad*_*nka 43

在EF4.1 RTW中,SQL Server的默认长度为nvarchar(max),SQL CE的默认长度为nvarchar(4000).要更改长度,请使用StringLengthMaxLength注释或流畅映射HasMaxLength:

[StringLength(256)]
public string Title { get; set; }
Run Code Online (Sandbox Code Playgroud)

要么

[MaxLength(256)]
public string Title { get; set; }
Run Code Online (Sandbox Code Playgroud)

要么

modelBuilder.Entity<Book>()
            .Property(p => p.Title)
            .HasMaxLength(256);
Run Code Online (Sandbox Code Playgroud)

  • `[StringLength]`仅用于验证目的而不是数据库约束. (8认同)
  • @Jalal @Pasi Savolainen我将`[StringLength(50)]`添加到了一个属性中.使用EF6 RC1并将其放入我的迁移中:`AlterColumn("dbo.Properties","OrganisationsReference",c => c.String(maxLength:50));` (2认同)