繁体   English   中英

如何验证类字段?

[英]How do i validate classfields?

确保字段具有数据库的有效值的好方法吗?

    internal class Customer
{

    private string _CustomerId;
    internal string CustomerId
    {
        get
        {
            return (_CustomerId==null?string.Empty:(_CustomerId.Length>20?_CustomerId.Substring(0,20):_CustomerId));
        }
        set
        {
            _CustomerId = value;
        }
    }}

问候斯文

一种更干净的技术是用验证属性注释属性,并使用库来验证实体。

示例包括:

然后,根据所选的库,您的代码将类似于:

public class Customer
{
    [StringLengthValidator(20)]
    public virtual string CustomerId { get; set;}
}

您验证输入的方式非常脆弱。 您将排除任何可能的输入(在这种情况下为CustomerId),并在请求时清除该输入。 在这种基本情况下,这可能会起作用,但是在许多情况下,您无法清理输入。 您基本上是在纠正用户的错误,并假设他的意图。 您将如何使用邮件地址进行操作? 例如,必须将邮件地址“ stevenhotmail.com”转换为“ steven@hotmail.com”或“ stevenhot@mail.com”。 除此之外,还有编程错误的可能性。 您是否希望程序尝试修复自己的编程错误。 这会让你头疼。 或者,当必须比较同一实体的两个属性时,您会怎么做?

更好的解决方案是允许实体变为无效状态,并在将其保存到数据库之前检查其有效性。 状态无效时,请勿尝试自动更正更改,而应抛出异常或将错误传达给用户。

有多种方法可以做到这一点。 例如,您可以在每个实体上实现IsValid()方法,也可以使用验证框架。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM