How to: Add validation to entity classes
Applies to: Visual Studio Visual Studio for Mac
Note
This article applies to Visual Studio 2017. If you're looking for the latest Visual Studio documentation, see Visual Studio documentation. We recommend upgrading to the latest version of Visual Studio. Download it here
Validating entity classes is the process of confirming that the values entered into data objects comply with the constraints in an object's schema, and also to the rules established for the application. Validating data before you send updates to the underlying database is a good practice that reduces errors. It also reduces the potential number of round trips between an application and the database.
The LINQ to SQL tools in Visual Studio provides partial methods that enable users to extend the designer-generated code that runs during Inserts, Updates, and Deletes of complete entities, and also during and after individual column changes.
Note
This topic provides the basic steps for adding validation to entity classes by using the O/R Designer. Because it might be difficult to follow these generic steps without referring to a specific entity class, a walkthrough that uses actual data is provided.
Add validation for changes to the value in a specific column
This procedure shows how to validate data when the value in a column changes. Because the validation is performed inside the class definition (instead of in the user interface), an exception is thrown if the value causes validation to fail. Implement error handling for the code in your application that attempts to change the column values.
Note
Your computer might show different names or locations for some of the Visual Studio user interface elements in this article. You may be using a different edition of Visual Studio or different environment settings. For more information, see Personalize the IDE.
To validate data during a column's value change
Open or create a new LINQ to SQL Classes file (.dbml file) in the O/R Designer. (Double-click the .dbml file in Solution Explorer.)
In the O/R Designer, right-click the class for which you want to add validation and then click View Code.
The Code Editor opens with a partial class for the selected entity class.
Place the cursor in the partial class.
For Visual Basic projects:
Expand the Method Name list.
Locate the OnCOLUMNNAMEChanging method for the column you want to add validation to.
An
OnCOLUMNNAMEChanging
method is added to the partial class.Add the following code to first verify that a value has been entered and then to ensure that the value entered for the column is acceptable for your application. The
value
argument contains the proposed value, so add logic to confirm that it is a valid value:If value.HasValue Then ' Add code to ensure that the value is acceptable. ' If value < 1 Then ' Throw New Exception("Invalid data!") ' End If End If
For C# projects:
Because C# projects do not automatically generate event handlers, you can use IntelliSense to create the column-changing partial methods. Type
partial
and then a space to access the list of available partial methods. Click the column-changing method for the column you want to add validation for. The following code resembles the code that is generated when you select a column-changing partial method:partial void OnCOLUMNNAMEChanging(COLUMNDATATYPE value) { throw new System.NotImplementedException(); }
Add Validation for Updates to an Entity Class
In addition to checking values during changes, you can also validate data when an attempt is made to update a complete entity class. Validation during an attempted update enables you to compare values in multiple columns if business rules require this. The following procedure shows how to validate when an attempt is made to update a complete entity class.
Note
Validation code for updates to complete entity classes is executed in the partial DataContext class (instead of in the partial class of a specific entity class).
To validate data during an update to an entity class
Open or create a new LINQ to SQL Classes file (.dbml file) in the O/R Designer. (Double-click the .dbml file in Solution Explorer.)
Right-click an empty area on the O/R Designer and click View Code.
The Code Editor opens with a partial class for the
DataContext
.Place the cursor in the partial class for the
DataContext
.For Visual Basic projects:
Expand the Method Name list.
Click UpdateENTITYCLASSNAME.
An
UpdateENTITYCLASSNAME
method is added to the partial class.Access individual column values by using the
instance
argument, as shown in the following code:If (instance.COLUMNNAME = x) And (instance.COLUMNNAME = y) Then Dim ErrorMessage As String = "Invalid data!" Throw New Exception(ErrorMessage) End If
For C# projects:
Because C# projects do not automatically generate event handlers, you can use IntelliSense to create the partial
UpdateCLASSNAME
method. Typepartial
and then a space to access the list of available partial methods. Click the update method for the class on which you want to add validation. The following code resembles the code that is generated when you select anUpdateCLASSNAME
partial method:partial void UpdateCLASSNAME(CLASSNAME instance) { if ((instance.COLUMNNAME == x) && (instance.COLUMNNAME = y)) { string ErrorMessage = "Invalid data!"; throw new System.Exception(ErrorMessage); } }