Скажем, у меня есть таблица, которая выглядит следующим образом:
create table #Employee (
EmployeeId int identity(1,1) not null,
FirstName varchar(100) not null,
LastName varchar(100) not null,
Suffix varchar(10) not null,
Prefix varchar(10) not null,
Address varchar(500) null)
И я заполняю эту таблицу сервисом WCF (Soap). Мой контракт на данные выглядит так:
[DataContract]
public class Employee
{
[DataMember]
public virtual string FirstName { get; set; }
[DataMember]
public virtual string LastName { get; set; }
[DataMember]
public virtual string Suffix { get; set; }
[DataMember]
public virtual string Prefix { get; set; }
[DataMember]
public virtual string Address { get; set; }
}
В контракте есть String
для всех этих полей. Максимальная длина строки может составлять около 1 073 741 823 символа . Это значительно превышает пределы, которые допускает база данных. Когда клиент отправляет данные, он может ввести в мой контракт действительно очень длинные значения.
Я хотел бы выяснить это, прежде чем попытаться (и не удастся) вставить.
У меня есть очень хорошая встроенная среда проверки, которая отправит сбой клиенту. И я мог бы пойти и поставить проверку для каждого элемента. Но если я жестко закодирую длины полей, я вижу, что они очень быстро выходят из-под контроля. (Если длина столбца должна быть изменена в двух местах, я открываю путь для ошибок, когда изменяется только одно или другое.)
Есть ли способ (с помощью сущности), чтобы получить длину элемента данных? Так я могу проверить это до того, как попытаться сохранить?
Или есть другой способ выполнить эту проверку (кроме простого сбоя вставки).