Как отловить исключение BrokenRuleException в PLINQO?
Я создал собственное правило, добавив
static partial void AddSharedRules()
{
RuleManager.AddShared<Tag>(
new CustomRule<String>(
"TagName",
"Invalid Tag Name, must be between 1 and 50 characters",
IsNullEmptyOrLarge));
}
в мой класс сущности.
Затем я добавил правило (как видно на видео, хотя оно датировано и содержит неверную информацию):
public static bool IsNullEmptyOrLarge( string value )
{
return (value == null
|| String.IsNullOrEmpty(value)
|| value.Length > 50);
}
Но теперь у меня есть код вызова...
try
{
// some code
}
catch ( CodeSmith.Data.Rules… ??? )
{
// I can’t add the BrokenRuleException object. It’s not on the list.
}
У меня есть: назначение, безопасность и проверка.
Как правильно отлавливать нарушения правил в PLINQO?
1 ответ
Решение
Вот что вам нужно сделать, сначала добавьте ссылку в свой проект на
System.ComponentModel.DataAnnotations
using CodeSmith.Data.Rules;
затем
try
{
context.SubmitChanges();
}
catch (BrokenRuleException ex)
{
foreach (BrokenRule rule in ex.BrokenRules)
{
Response.Write("<br/>" + rule.Message);
}
}
Если вы хотите изменить сообщение по умолчанию, вы можете перейти к вашей сущности и изменить атрибут с
[Required]
в
[CodeSmith.Data.Audit.Audit]
private class Metadata
{
// Only Attributes in the class will be preserved.
public int NameId { get; set; }
[Required(ErrorMessage="please please please add a firstname!")]
public string FirstName { get; set; }
Вы также можете использовать эти типы атрибутов аннотации данных
[StringLength(10, ErrorMessage= "The name cannot exceed 10 characters long")]
[Range(10, 1000, ErrorMessage = "Value for {0} must be between {1} and {2}.")]
[RegularExpression(@"^[a-zA-Z''-'\s]{1,40}$", ErrorMessage = "Characters are not allowed.")]
public string FirstName { get; set; }
НТН