【问题标题】:In WEB API with EF6 models, how do I limit the length of a VARCHAR(MAX) column returned在带有 EF6 模型的 WEB API 中,如何限制返回的 VARCHAR(MAX) 列的长度
【发布时间】:2016-07-06 19:07:58
【问题描述】:

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

我认为这将是部分课程的好地方 - 也许可以这样做:

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

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

【问题讨论】:

  • 你遇到了什么错误?
  • 类型“...Equipment_Detail”已经包含“note”的定义 - 自动生成的模型已经具有该字段。我只想在返回时限制字段的大小。
  • 为什么不返回 DTO?

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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2015-11-23
    • 1970-01-01
    • 2016-06-24
    • 2013-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-25
    • 2023-03-18
    相关资源
    最近更新 更多