DisplayName on Model that use Entity Framework

I have a code that look like this :

public class MyModel
{
    [Required]
    [Display(Name = "labelForName", ResourceType = typeof(Resources.Resources))]
    public string name{ get; set; }
}

The problem is the attribute Display and Required have been added in the generated model class of Entity Framework. I know I can add functionality with Partial but how can I add attribute to a class that will be erase and updated with the ORM?

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

In my experience, models from a database are seldom the same as being used in web pages. You always need some kind of change. Hence the usage of ViewModels. Another upside is that all web pages that use your ViewModel won’t break if the entity model is changed.

As for security, if you have a public ActionResult Save(MyEntityModel model) can lead to a security breach since the user may figure out how to post values to properties that shouldn’t be changed (like Role, Status, IsAdmin or whatever).

Get yourself familiar with a mapper (like automapper) instead, and put the attributes on the ViewModel.

Method 2

Have you considered a T4 Template to modify generated code.

http://www.hanselman.com/blog/T4TextTemplateTransformationToolkitCodeGenerationBestKeptVisualStudioSecret.aspx

I tend to use T4 templates in combination with partial classes when dealing with generated code.


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x