This blog post is archived. I consider it outdated and not very useful anymore but since there are many who still visit these pages I've decided to keep them up.
Metadatatypes and why theyre useful
MetadataType
You have a linq dbml file created and you wish to add some attributes to the properties. However, if you update your dbml file for any reason all your changes will disappear.
You’ll have 3 separate classes after you’re done with one Linq object
Linq Object
public partial class YourLinqObject {
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
Your attribute class holder
[MetadataType(typeof(YourLinqObjectMetadata))]
public partial class YourLinqObject {
}
Your metadata class
public class YourLinqObjectMetadata {
[MaximumLength(50)]
public string FirstName { get; set; }
[MaximumLength(50)]
public string LastName { get; set; }
[Range(13, 100)]
public int Age { get; set; }
}
Whenever you update your dbml it won’t affect your partial class and you’ll keep your attributes. It does cause a bit of code duplication, however with relation to the properties but it’s effective none-the-less.