Imamul Karim Tonmoy
Imamul Karim Tonmoy

Reputation: 584

Validation in data first approch

I am implementing a project using mvc 4 and entity framework.

where i used data first approach. and i am implementing a partial class for my models for various business logic.

my question is how can i set validation rule on my properties. shown in below.

[Required]
public string FirstName { get; set; }

if i manually added this code "[Required]" on a property (entity framework generate models). and then if i need to change model for database changes. then all my validation rule is gone

how can i over come this problem, without using code first approach.

Upvotes: 1

Views: 95

Answers (2)

Greg
Greg

Reputation: 2690

Another way around this (using CodeFirst) is to use a Fluent Validation. The CustomerValidator will always point at the regenerated Customer class (unless you change the Customer class name obviously)

using FluentValidation;

public class CustomerValidator : AbstractValidator<Customer> {
  public CustomerValidator {
    RuleFor(customer => customer.Surname).NotNull();
  }
}

Upvotes: 1

Anders Abel
Anders Abel

Reputation: 69250

As you've found out you should never edit the generated files since changes are lost when you regenerate them.

A better architecture than to use the entities as models for your views is to insert a separate View Model between the view and the entity. The view model should correspond closely to the needs of the view and often retrieves data from several underlying entities.

The attributes then goes on the view model properties instead of on the entities.

View models also remedies the risk of mass assignment vulnerabilities in your application, which are particularly dangerous if you are using lazy loading in your entities.

Upvotes: 2

Related Questions