Mapping 实体框架4.1代码优先方法:如何定义属性的长度
顾名思义: 如何在代码优先的方法中告诉EntityFramework4.1,我确实希望某些属性(特别是字符串类型)的长度为256,或者nvarchar(max),或者 如果这是我的模型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) } 它是如何定义的 提前谢
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)]