在使用 EF6 模型的 WEB API 中,如何限制返回的 VARCHAR(MAX) 列的长度
In WEB API with EF6 models, how do I limit the length of a VARCHAR(MAX) column returned
我有一个用户今年将无法更新他们的客户端。我的专栏之一是 VARCHAR(MAX),当它包含超过 250 个字符时,他们当前的客户会在该字段上窒息。由于他们是使用此端点的唯一授权客户端,我想减轻他们的痛苦,只需将列截断为 250 个字符。这是一个只读端点,因此我不必处理更新。
我认为这是部分 类 的好地方 - 也许可以这样做:
public partial class Equipment_Detail
{
public string note
{
get
{
return left(note, 250);
}
set { }
}
}
但它与现有定义冲突。我知道我在这里遗漏了一些非常基础的东西,但我每年只使用 .NET 一次。
DTO 是个好主意,但是我的控制器中有所有 .Include()
(此时我的模型相当复杂),我想我找到了一个更简单的解决方案:
- 将设计器中的列从 'note' 重命名为 'fullnote' 并将其设为私有
在部分 class 中,创建一个注释字段并使用私有 fullnote,必要时截断:
public string note
{
get
{
string _note = fullnote;
if (!String.IsNullOrEmpty(_note))
{
if (_note.Length > 250)
{
_note = _note.Substring(0, 250);
}
}
return _note;
}
set { }
}
我有一个用户今年将无法更新他们的客户端。我的专栏之一是 VARCHAR(MAX),当它包含超过 250 个字符时,他们当前的客户会在该字段上窒息。由于他们是使用此端点的唯一授权客户端,我想减轻他们的痛苦,只需将列截断为 250 个字符。这是一个只读端点,因此我不必处理更新。
我认为这是部分 类 的好地方 - 也许可以这样做:
public partial class Equipment_Detail
{
public string note
{
get
{
return left(note, 250);
}
set { }
}
}
但它与现有定义冲突。我知道我在这里遗漏了一些非常基础的东西,但我每年只使用 .NET 一次。
DTO 是个好主意,但是我的控制器中有所有 .Include()
(此时我的模型相当复杂),我想我找到了一个更简单的解决方案:
- 将设计器中的列从 'note' 重命名为 'fullnote' 并将其设为私有
在部分 class 中,创建一个注释字段并使用私有 fullnote,必要时截断:
public string note { get { string _note = fullnote; if (!String.IsNullOrEmpty(_note)) { if (_note.Length > 250) { _note = _note.Substring(0, 250); } } return _note; } set { } }