【发布时间】:2011-03-15 19:29:56
【问题描述】:
我正在使用 EF4 Code First (CTP5) 来生成我的数据库,并且我正在使用 DataAnnotations 来尝试控制生成的数据库架构。如果我使用 [Required] 属性,那么该列会正确生成为 NOT NULL,但是当我尝试使用 [StringLength(50)] 属性时,我的所有列最终都会被创建为 NVarChar(max)。
这是我的一个类(简化)的代码 sn-p,因此您可以看到我的问题:
public class Person
{
public int PersonID { get; set; }
// This property is generated as NVarChar(max) NOT NULL
// I prefer it be NVarChar(50) NOT NULL
[Required(ErrorMessage="Please enter a first name")]
[StringLength(50, ErrorMessage="First name is too long")]
public string FirstName { get; set; }
}
如果 [StringLength] 属性不起作用,是否有其他方法可以控制生成的 nvarchar 列长度?
谢谢,
布伦特·斯图尔特
【问题讨论】:
-
你一定做错了什么,因为这些数据注释对我有用。你在
OnModelCreating中映射任何东西吗?添加数据注释后是否重新创建了数据库? -
感谢您确认它工作正常。得知这一点后,我决定检查我的工具,发现 LINQPad 没有正确报告这些列(CE4 数据库)。我使用 WebMatrix 检查了列类型,并确定它被正确创建。再次感谢。
-
您可以删除或更好地回答您自己的问题,因为它可能对其他人有用,并且答案不应在评论中。
标签: entity-framework-4 data-annotations ef-code-first