title: Why are buddy classes used for validation?
body: <p>I am curious as to why data validation is done using buddy classes. Consider the following example, where <code>MyEntity</code> is a Linq-to-SQL or Linq-to-Entities entity, and the class below is a partial class enhancing the entity.</p>
  
  <pre><code>[MetadataType(typeof(MyEntity.MyEntityMetadata))]
  public partial class MyEntity
  {
      private class MyEntityMetadata
      {
          [Required(ErrorMessage = "The title is required.")]
          public string Title { get; set; }
      }
  }
  </code></pre>
  
  <p>Why is the design so? When they designed DataAnnotations, why was this "buddy pattern" selected? Why not place the attributes directly in the entity?</p>