在带有EF6模型的WEB API中,如何限制返回的VARCHAR(MAX)列的长度

时间:2016-07-06 19:07:58

标签: c# class entity-framework-6 asp.net-web-api2 edmx

我的用户今年无法更新其客户端。我的一个列是VARCHAR(MAX),当它包含超过250个字符时,它们当前的客户端会在字段上窒息。由于他们是使用此端点的唯一授权客户端,因此我想减轻他们的痛苦并将列截断为250个字符。这是一个只读端点,因此我不必处理更新。

我认为这对于部分课程来说是一个好地方 - 也许可以这样做:

  public partial class Equipment_Detail
  {   
    public string note
    {
        get
        {
            return left(note, 250);
        }
        set { }
    }
  }

但它与现有定义相冲突。我知道我在这里缺少一些非常基本的东西,但我每年只使用一次.NET。

1 个答案:

答案 0 :(得分:1)

DTO是一个好主意,但是我的控制器中的所有.Include()(我的模型在这一点上相当复杂),我想我找到了一个更简单的解决方案:

  1. 将设计器中的列从“note”重命名为“fullnote”并将其设为私有Visual Studio properties screen shot
  2. 在分部类中,创建一个注释字段并使用私人注释,必要时截断:

    public string note
    {
        get
        {
            string _note = fullnote;
            if (!String.IsNullOrEmpty(_note))
            {
                if (_note.Length > 250)
                {
                    _note = _note.Substring(0, 250);
                }
            }
            return _note;
        }
        set { }
    }