In this article I will explain with an example, how to update data into Database using Entity Framework in ASP.Net Core Razor Pages.
Note: For more details on inserting data into Database in ASP.Net Core Razor Pages using Entity Framework, please refer my article ASP.Net Core Razor Pages: Insert Data into Database using Entity Framework.
I have made use of the following table Customers with the schema as follows. CustomerId is an Auto-Increment (Identity) column.
ASP.Net Core Razor Pages: Update Data into Database using Entity Framework
I have already inserted few records in the table.
ASP.Net Core Razor Pages: Update Data into Database using Entity Framework
Note: You can download the database table SQL by clicking the download link below.
          Download SQL file
Following class is used as the Model class.
public class Customer
    public int CustomerId { get; set; }
    public string Name { get; set; }
    public string Country { get; set; }
Database Context
Once the Entity Framework is configured and connected to the database table, the Database Context will look as shown below.
Note: For beginners in ASP.Net Core and Entity Framework, please refer my article ASP.Net Core Razor Pages: Simple Entity Framework Tutorial with example. It covers all the information needed for connecting and configuring Entity Framework with ASP.Net Core.
using Microsoft.EntityFrameworkCore;
namespace EF_Update_Razor_Core
    public class DBCtx : DbContext
        public DBCtx(DbContextOptions<DBCtx> options) : base(options)
        public DbSet<Customer> Customers { get; set; }
Razor PageModel (Code-Behind)
The PageModel consists of following two Handler methods.
Handler method for handling GET operation
This Handler method handles the GET calls, for this particular example it is not required and hence left empty.
Handler method for handling Button Click and POST operation
This Handler method handles the POST call when the Submit Button is clicked and the Form is submitted.
This Handler method accepts an object of the Customer Model class as parameter. The values posted from the Form inside the Razor Page are received through this parameter.
The CustomerId value of the received Customer object is used to reference the Customer record using Entity Framework.
Once the record is referenced, the values of Name and Country are updated and the changes are updated into the Customers table.
Based on whether the reference of the Customer is found or not, an appropriate message is set in the ViewData object.
public class IndexModel : PageModel
    private DBCtx Context { get; }
    public IndexModel(DBCtx _context)
        this.Context = _context;
    public Customer Customer { get; set; }
    public void OnGet()
    public void OnPostSubmit(Customer customer)
        Customer updatedCustomer = (from c in this.Context.Customers
                                    where c.CustomerId == customer.CustomerId
                                    select c).FirstOrDefault();
        if (updatedCustomer != null)
            updatedCustomer.Name = customer.Name;
            updatedCustomer.Country = customer.Country;
            ViewData["Message"] = "Customer record updated.";
            ViewData["Message"] = "Customer not found.";
Razor Page (HTML)
Inside the Razor Page, the ASP.Net TagHelpers is inherited.
The Razor Page consists of an HTML Form.
The HTML Form consists of three TextBoxes 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.
When the Update button is clicked, the values of CustomerId, Name and Country are passed to the IndexModel.
Finally, the value of the ViewData object is displayed using JavaScript Alert MessageBox.
@model EF_Update_Razor_Core.Pages.IndexModel
@addTagHelper*, Microsoft.AspNetCore.Mvc.TagHelpers
    Layout = null;
<!DOCTYPE html>
    <meta name="viewport" content="width=device-width" />
    <form method="post">
        <table border="0" cellpadding="0" cellspacing="0">
                <td style="width: 60px">
                    Id<br />
                    <input type="text" asp-for="Customer.CustomerId" style="width:50px" />
                <td style="width: 150px">
                    Name<br />
                    <input type="text" asp-for="Customer.Name" style="width: 140px" />
                <td style="width: 150px">
                    Country:<br />
                    <input type="text" asp-for="Customer.Country" style="width: 140px" />
                <td style="width: 200px">
                    <br />
                    <input type="submit" value="Update" asp-page-handler="Submit" />
    @if (ViewData["Message"] != null)
        <script type="text/javascript">
            window.onload = function () {
ASP.Net Core Razor Pages: Update Data into Database using Entity Framework