Mapping 实体框架4.1代码优先方法:如何定义属性的长度

Mapping 实体框架4.1代码优先方法:如何定义属性的长度,mapping,ef-code-first,entity-framework-4.1,Mapping,Ef Code First,Entity Framework 4.1,顾名思义: 如何在代码优先的方法中告诉EntityFramework4.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) } 它是如何定义的 提前谢

顾名思义:

如何在代码优先的方法中告诉EntityFramework4.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)
}
它是如何定义的


提前谢谢

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

[StringLength(256)]
public string Title { get; set; }

modelBuilder.Entity()
.Property(p=>p.Title)
.HasMaxLength(256);

正如我在评论中所说,这很简单。

只需使用
[StringLength(1000)]
[MaxLength]
DataAnnotation

您可以使用以下方法 如果需要最大字符串长度

[StringLength(Int32.MaxValue)]


@Ladislav的可能复制品是的,几乎是复制品,但略有不同!我找到了方法:只需使用一个DataAnnotation,例如[StringLength(1000)]或[MaxLength]hmm!您能解释一下为什么SQL Server 2008 R2默认为任何字符串属性创建nvarchar(128)(而不是您所说的nvarchar(max))吗?因为您使用的是RC,而不是最新的最终RTW版本。
[StringLength]
仅用于验证目的,不作为数据库约束。@Jalal-您能详细说明该注释吗?@Jalal@Pasi Savolainen我在属性中添加了
[StringLength(50)]
。使用EF6RC1并将其放入我的迁移中:
AlterColumn(“dbo.Properties”,“organizationsreference”,c=>c.String(maxLength:50))
modelBuilder.Entity<Book>()
            .Property(p => p.Title)
            .HasMaxLength(256);
[StringLength(Int32.MaxValue)]
[MaxLength]
Property(m => m.Title ).IsRequired().HasMaxLength(128);
[MaxLength(256)]