【问题标题】:How do you control the length of generated nvarchar columns when using EF4 Code First?使用 EF4 Code First 时如何控制生成的 nvarchar 列的长度?
【发布时间】: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


【解决方案1】:

我发现我遇到的问题是由 LINQPad 中的一个错误引起的,它没有准确地报告我的 SQL Server CE 4 数据库的列类型。 [StringLength] 属性按应有的方式工作。

【讨论】:

    猜你喜欢
    • 2014-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-06
    相关资源
    最近更新 更多