In this article I will explain with an example, how to delete data from database with
Stored Procedure using
Dapper library in ASP.Net Core Razor Pages.
Installing Dapper package using Nuget
Database
I have made use of the following table Customers with the schema as follows.
I have already inserted few records in the table.
Note: You can download the database table SQL by clicking the download link below.
Stored Procedure
This
Stored Procedure accepts
CustomerId parameter, which is used to DELETE the records in
Customers Table.
CREATE PROCEDURE [Customers_DeleteCustomer]
@CustomerId INT
AS
BEGIN
DELETE FROM [Customers]
WHERE CustomerId = @CustomerId
END
Model
The Model class consists of following property.
public class CustomerModel
{
public int CustomerId { get; set; }
}
Namespaces
You will need to import the following namespaces.
using Dapper;
using System.Data.SqlClient;
Razor PageModel (Code-Behind)
The PageModel consists of following Handler methods.
Handler method for handling GET operation
This Handler method is left empty as it is not required.
Handler method for handling POST operation
This Handler method accepts CustomerModel class object as a parameter.
Inside this Handler method, first the connection is read from the ConnectionStrings section of the AppSettings.json file.
Then, the name of the
Stored Procedure and the
CustomerModel class object is passed to the
Execute method of the
Dapper library which then deletes the record from the
Customers Table.
Finally, based on whether the record is deleted or not an appropriate message is set into
ViewData object.
public class IndexModel : PageModel
{
public IConfiguration Configuration { get; set; }
public CustomerModel Customer { get; set; }
public IndexModel(IConfiguration configuration)
{
this.Configuration = configuration;
}
public void OnGet()
{
}
public void OnPostSubmit(CustomerModel customer)
{
string spName = "Customers_DeleteCustomer";
string constr = this.Configuration.GetSection("ConnectionStrings")["MyConn"];
using (SqlConnection con = new SqlConnection(constr))
{
int i = con.Execute(spName, customer, commandType: CommandType.StoredProcedure);
if (i > 0)
{
ViewData["Message"] = "Customer record deleted.";
}
else
{
ViewData["Message"] = "Customer not found.";
}
}
}
}
Razor Page (HTML)
HTML Markup
Inside the Razor Page, the ASP.Net TagHelpers is inherited.
The HTML Razor Page also consists of an HTML Table, which consists of a TextBox and a Submit button.
The Submit Button has been set with the POST Handler method using the asp-page-handler attribute.
Note: In the Razor PageModel, the Handler method name is OnPostSubmit but here it will be specified as Submit when calling from the Razor HTML Page.
Submitting the Form
When the
Submit Button is clicked then, the
ViewData object is checked for NULL and if it is not NULL then, the value of the
ViewData object is displayed using
JavaScript Alert Message Box.
@page
@model Dapper_Delete_SP_Core_Razor.Pages.IndexModel
@addTagHelper*, Microsoft.AspNetCore.Mvc.TagHelpers
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<form method="post">
<table cellpadding="1" cellspacing="1">
<tr>
<td style="width: 60px">
Id<br />
<input type="text" asp-for="Customer.CustomerId" style="width:25px;" />
</td>
<td style="width: 200px">
<br />
<input type="submit" value="Delete" asp-page-handler="Submit" />
</td>
</tr>
</table>
@if (ViewData["Message"] != null)
{
<script type="text/javascript">
window.onload = function () {
alert("@ViewData["Message"]");
};
</script>
}
</form>
</body>
</html>
Screenshot
Downloads