Я создал несколько классов, которые будут использоваться для предоставления данных хранимым процедурам в моей базе данных. В varchar
параметрах хранимых проков имеют спецификации длины (например, varchar(6)
, и я хотел бы, чтобы проверить длину всех строковых свойств перед передачей их на хранимые процедуры.Какие способы можно гарантировать, что свойство string имеет определенную длину?
есть простой, декларативный способ сделать это?
у меня есть две концептуальные идеи до сих пор:
Атрибуты
public class MyDataClass
{
[MaxStringLength = 50]
public string CompanyName { get; set; }
}
Я не уверен, какие сборки/пространства имен мне нужно будет использовать для реализации такой декларативной разметки. Я думаю, что это уже существует, но я не уверен, где и когда это лучший способ.
Validation в свойствах
public class MyDataClass
{
private string _CompanyName;
public string CompanyName
{
get {return _CompanyName;}
set
{
if (value.Length > 50)
throw new InvalidOperationException();
_CompanyName = value;
}
}
}
Это кажется, что много работы, и будет действительно сделать мои настоящий момент простых классов выглядят довольно некрасиво, но я предполагаю, что это будет получить работу. Это также займет много копий и склеиваний, чтобы получить это право.
'[MaxStringLength (50)]' может даже компилироваться. –
Если вам нужно пойти по маршруту исключения (я не уверен, есть ли альтернатива), [это] (http://blog.getpaint.net/2008/12/06/a-fluent-approach-to -c-parameter-validation /) статья довольно интересная - если вы свободно программируете, то есть. – Stephen
Попробуйте реализовать поведение атрибута, чтобы понять, что действительно выглядит уродливый код. –