O'Reilly logo

Programming Entity Framework: DbContext by Rowan Miller, Julia Lerman

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Chapter 7. Customizing Validations

In the previous chapter you learned many ways that you can apply validation rules so that the DbContext Validation API can find and check them either on demand or automatically. While you can explicitly validate individual classes and properties directly from the DbEntityEntry method, you can also have the context validate all of its tracked entities as a group, either by calling GetValidationErrors or letting SaveChanges call that method for you. GetValidationErrors then calls ValidateEntity on each of the Added and Modified entities in the context. ValidateEntity then triggers logic that checks the ValidationAttribute and IValidatableObject rules you’ve specified in your classes.

You’ve seen how ValidateEntity works in Chapter 6. In this chapter, you’ll learn how to customize the ValidateEntity method not only by overriding the logic of the method, but also by overriding the method that determines which entities should be validated.

Overriding ValidateEntity in the DbContext

ValidateEntity is a virtual method, meaning that you can override it and add your own custom logic. Like any virtual method, after executing your logic, you can control whether or not it performs the validations it’s designed to execute (for example, validating the ValidationAttributes and IValidatableObject rules).

Example 7-1 shows the ValidateEntity method added into the BreakAwayContext class after using the Visual Studio IDE shortcut to add the overridden method.

Example 7-1. Signature ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required