【问题标题】:Get the Max Length of a column in Entity Framework获取实体框架中列的最大长度
【发布时间】:2013-02-21 21:18:44
【问题描述】:

当我将数据库导入我的 EDMX 模型时,我会得到以下关于最大长度的信息

在上图中,我有最大长度为 250

的字符串列

有没有办法检查(在编码时)这个最大长度,而不需要查看 EDMX 属性?


我希望如何显示信息的示例:

如果我键入 Class.ColumnName 之类的内容,它会在 Intellisense 中显示为摘要信息。

【问题讨论】:

    标签: c# entity-framework linq-to-entities intellisense sqldatatypes


    【解决方案1】:

    一种方法是在一个类中声明它并使用这个类(不是edmx),例如:

    [Column("Name")]
    [Required(ErrorMessage = "Name is obligatory")]
    [StringLength(30, MinimumLength = 3, ErrorMessage = "Name has to have at least 3 characters")]
    public string Name { get; set; }
    

    然后我使用用户控件在屏幕上检查它。 (我知道有更好的解决方案)


    PS:这个类有点复杂,有很多自定义,如果有人需要,我可以在以后发布。

    但是,您可以在以下链接中查看更多信息:

    StringLength vs MaxLength attributes ASP.NET MVC3 with EF 4.1 Code First
    C# How to use DataAnnotations StringLength and SubString to remove text
    StringLengthAttribute Class
    和String Canonical Functions

    【讨论】:

      【解决方案2】:

      Intellisense 将显示设计器的文档 -> 摘要字段中的任何文本。这为您提供了一些选择。

      1) 您可能是真正的强迫症患者,在设计器中编辑您的 EDMX 时,请确保始终填写此字段。

      2) 您创建一些脚本来解析您的 .edmx(您可以像编辑任何 XML 文件一样对其进行编辑),查找指定了 MaxLength 的 <Property> 元素,然后添加 <Documentation> 和 <Summary>里面的元素,简单地说明最大长度是多少。例如解析:

      <Property Name="USER_NAME" Type="String" MaxLength="50" Unicode="true" FixedLength="false" >
      

      进入:

      <Property Name="USER_NAME" Type="String" MaxLength="50" Unicode="true" FixedLength="false" >
        <Documentation>
          <Summary>Max length of 50</Summary>
        </Documentation>
      </Property>
      

      编辑完成后,您只需打开设计器并再次保存即可重建 .Designer.cs/vb。

      3) 不知何故让 Visual Studio 知道一个类来自 EDMX,然后返回解析 EDMX 以获取 MaxLength,然后更新 Intellisense 以相应地显示。 (我不知道这是否可能。)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-01
        • 1970-01-01
        相关资源
        最近更新 更多