In this article I will explain a simple tutorial with an example, how to use simple 
Entity Framework in ASP.Net Core (.Net Core 6) Razor Pages.
This article will explain how to configure 
Entity Framework and connect to 
SQL Server database and finally the fetched data is displayed in View in ASP.Net Core (.Net Core 6) Razor Pages.
 
     
    Installing Microsoft.EntityFrameworkCore.SqlServer package using Nuget
    
     
     
    Database
    Here I am making use of Microsoft’s Northwind Database. You can download it from here.
    
     
     
    Model
    1. Once the package is successfully installed, create a Folder named Models in your project and then a new class by right clicking the Models folder and then click on Add and then New Item option of the Context Menu.
    ![.Net Core 6: Entity Framework Tutorial in ASP.Net Core Razor Pages]() 
     
    2. Create the following properties inside the Model class as shown below.
    
        Note: In this article, only four Columns will be displayed and hence four properties are added to the class.
     
    
        public class Customer
        {
            public string CustomerID { get; set; }
            public string ContactName { get; set; }
            public string City { get; set; }
            public string Country { get; set; }
        }
     
     
     
    Database Context
    1. Now you will need to add a new class to your project by right clicking the Solution Explorer and then click on Add and then New Item option of the Context Menu.
    ![.Net Core 6: Entity Framework Tutorial in ASP.Net Core Razor Pages]() 
     
    2. Inside the class, first inherit the EntityFrameworkCore namespace and then inherit the DbContext class.
    Then using Dependency Injection, a Constructor is created DbContextOptions are passed as parameter and also the Constructor of base class i.e. DbContext class is inherited.
    
     
    Finally, a 
DbSet Collection property of 
Customer Model class is created, which will be later used for holding the Data fetched from 
SQL Server database.
        using EF_Core_Razor_6.Models;
        using Microsoft.EntityFrameworkCore;
        namespace EF_Core_Razor_6
        {
            public class DBCtx : DbContext
            {
                public DBCtx(DbContextOptions<DBCtx> options) : base(options)
                {
                }
         
                public DbSet<Customer> Customers { get; set; }
            }
        }
     
     
     
    Adding the Connection String inside AppSettings.json
    The following Connection String setting has been added in the AppSettings.json file.
    
        {
         "ConnectionStrings": {
            "MyConn": "Data Source=.\\SQL2022;Initial Catalog=Northwind;Integrated Security=True"
         }
        }
     
     
     
    Configuring Database Context in Program.cs
    Inside the Program.cs file, the Connection String is read from the AppSettings.json file and is used to add the DbContext service to the WebApplicationBuilder class.
    
     
    
        using EF_Core_Razor_6;
        using Microsoft.EntityFrameworkCore;
         
        var builder = WebApplication.CreateBuilder(args);
         
        // Enabling MVC
        builder.Services.AddMvc();
        builder.Services.AddControllersWithViews();
        string constr = builder.Configuration.GetSection("ConnectionStrings")["MyConn"];
        builder.Services.AddDbContext<DBCtx>(options => options.UseSqlServer(constr));
         
        var app = builder.Build();
         
        //Configure Routes
        app.UseRouting();
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapRazorPages();
        });
         
        app.Run();
     
     
     
    Razor PageModel (Code-Behind)
    The PageModel consists of following Handler method.
    Handler method for handling GET operation
    Inside this Handler method, the Top 10 records are fetched from the 
Customers Table of the 
Northwind database using 
Entity Framework and returned to View as Generic List collection of 
Customer class object.
        public class IndexModel : PageModel
        {
            private DBCtx Context { get; }
            public IndexModel(DBCtx _context)
            {
                this.Context = _context;
            }
         
            public List<Customer> Customers { get; set; }
         
            public void OnGet()
            {
                this.Customers = (from customer in this.Context.Customers.Take(10)
                                  select customer).ToList();
            }
        }
     
     
     
    Razor Page (HTML)
    HTML Markup
    The HTML of Razor Page consists of an HTML Table for displaying the records.
    Then, a FOR EACH loop will be executed over the Model property which will generate the HTML Table rows with the Customer records.
    
        @page
        @using EF_Core_Razor_6.Models
        @model EF_Core_Razor_6.Pages.IndexModel
        @{
            Layout = null;
        }
         
        <!DOCTYPE html>
         
        <html>
        <head>
            <meta name="viewport" content="width=device-width" />
            <title>Index</title>
        </head>
        <body>
            <h4>Customers</h4>
            <hr />
            <table cellpadding="0" cellspacing="0">
                <tr>
                    <th>Customer Id</th>
                    <th>ContactName</th>
                    <th>City</th>
                    <th>Country</th>
                </tr>
                @foreach (Customer customer in Model.Customers)
                {
                    <tr>
                        <td>@customer.CustomerID</td>
                        <td>@customer.ContactName</td>
                        <td>@customer.City</td>
                        <td>@customer.Country</td>
                    </tr>
                }
            </table>
        </body>
        </html>
     
     
     
    Screenshot
    ![.Net Core 6: Entity Framework Tutorial in ASP.Net Core Razor Pages]() 
     
     
    Downloads