• LINQ到SQL:的OnValidate()和自定义域模型类

  • 本文关于 c#,asp.net-mvc,linq-to-sql
  • CodeGo.net > LINQ到SQL:的OnValidate()和自定义域模型类
  •  

    LINQ到SQL:的OnValidate()和自定义域模型类



    c# asp.net-mvc linq-to-sql
    通过NerdDinner范例教学工作,我试图想出一个好办法来对性能进行验证,是不是依赖于一个LINQ到SQL生成的分部类。下面是什么我迄今所做的示例代码:
    public abstract class DomainEntity
    {
     public IEnumerable<ValidationError> ValidationErrors { get; private set; }
     public bool Validate()
     {
      bool isValid = false;
      if (this.ValidationErrors != null)
       this.ValidationErrors = null;
      this.ValidationErrors = this.GetValidationErrors();
      if (this.ValidationErrors.Count() == 0)
       isValid = true;
      return isValid;
     }
     protected abstract IEnumerable<ValidationError> GetValidationErrors();
    }
    public partial class Email : DomainEntity
    {
     protected override IEnumerable<ValidationError> GetValidationErrors()
     {
      if (!this.ValidateAddress())
       yield return new ValidationError("Address", DomainResources.EmailAddressValidationErrorMessage);
      yield break;
     }
     partial void OnValidate(ChangeAction action)
     {
      bool isValid = this.Validate();
      if (!isValid)
       throw new InvalidEmailException(this);
     }
     private bool ValidateAddress()
     {
      // TODO: Use a regex to validate the email address.
      return !string.IsNullOrEmpty(this.Address);
     }
    }
    
    凡电子邮件是根据关闭一个电子邮件表中的LINQ到SQL生成的类型。由于电子邮件表,但相关的域模型类(例如,“用户”)几个实体之一,理想是建立一个“用户”领域模型类中的验证应用程序块的属性来验证性能。换句话说,我想这样的:
    
    public class User
    {
     private Email emailEntity;
     [EmailAddressValidator]
     public string EmailAddress
     {
      get { return emailEntity.Address; }
      set { emailEntity.Address = value; }
     }
    }
    
    所以 CodeGo.net,如果我改变我的数据库架构,并且更改告吹我的LINQ到SQL生成的类,我没有这些孤立的局部类(如部分类电子邮件)。我也希望受益于整合验证应用程序块的属性,这样我就不必维持正则表达式的集合,如在NerdDinner范例教程中完成的。用户作为域类将是函数单元中的域,而不是电子邮件和其他实体,用于创建视图模型,渲染视图等,但是,没有办法捕捉到验证调用没有做这样的:
    public abstract class DomainEntity
    {
     public event EventHandler Validation(object sender, EventArgs args);
     protected void OnValidation()
     {
      if (this.Validate != null)
       this.Validate(this, EventArgs.Empty);
     }
    }
    public partial class Email
    {
     partial void OnValidate(ChangeAction action)
     {
      this.OnValidation();
     }
    }
    
    ,然后让用户勾成该事件,并在用户处理所有的验证。会,即使验证应用程序块正常工作?如何在一个合理的方式执行验证的用户喜欢聚集的域类?
    本文地址 :CodeGo.net/1482713/
    -------------------------------------------------------------------------------------------------------------------------
    1.把验证作为一种服务,而不是作为实体的责任,这将让从什么是有效的定义你的验证分开,把验证到一个明确的操作,而不是隐式一(由L2S管理)。 看看fluent的验证.net()为一个很好的这种做法。
    2. 看看这篇文章。它说明了如何验证的LINQ to SQL中的微软认证应用程序块。 正如本文介绍的伎俩验证应用程序块为基础的配置验证,而不是基于属性的验证。生成实体,使用基于属性的方法几乎是不可能的。
    本文标题 :LINQ到SQL:的OnValidate()和自定义域模型类
    本文地址 :CodeGo.net/1482713/
    1. 怎么判断两个对象是不是相等
    2. 如何声明,它返回的“东西”的泛型集合的方法(C#)
    3. (1-2/15)^3.5的 3.5次方 怎么写
    4. MVC在c#中取胜。申请表格
    5. 文章沉,关于C# tcp服务器不稳定报错,详细错误信息和图片都有帮助
    6. C#中:发送从非活动窗口输入
    7. sql:where gno in (@gno) 提示:输入字符串的格式不正确
    8. C#源代码搜索
    9. 类或方法的提示说明
    10. 在执行一个新的进程的静态方法

     
    

    Copyright © 2017 CodeGo.net
    http://codego.net/xinwen/ 足球比分网 足球比分 医药招商网 邵阳县新闻