Extend model with additional property

This guide demonstrates how to extend model with additional property.

You can extend your table class with additional, not-mapped properties. For example you can add ExtendedPrice to Northwind OrderDetails (SQL Table) from OrderDetailsExtended (SQL View) using partial classes:

1. Add Northwind OrderDetails partial class with ExtendedPrice property

OrderDetail.Custom.cs

public partial class OrderDetail
{
  // Additional property
  [NotMapped]
  public decimal? ExtendedPrice
  {
    get;
    set;
  }
}

2. Populate ExtendedPrice from OrderDetailsExtended using OnOrderDetailsRead partial method in NorthwindService partial class

server\Services\NorthwindService.Custom.cs

using SampleBlazor.Models.Northwind;
using System.Linq;

namespace SampleBlazor
{
    public partial class NorthwindService
    {
        partial void OnOrderDetailsRead(ref IQueryable<OrderDetail> items)
        {
            var orderDetailsExtended = this.context.OrderDetailsExtendeds.ToList();
            // Populate additional property
            foreach (var item in items)
            {
                var orderDetailExtended = orderDetailsExtended
                    .Where(ode => ode.OrderID == item.OrderID && ode.ProductID == item.ProductID)
                    .FirstOrDefault();

                if (orderDetailExtended != null)
                {
                    item.ExtendedPrice = orderDetailExtended.ExtendedPrice;
                }
            }
        }
    }
}

3. Create new page, bind DataGrid component to Northwind OrderDetails and add additional column bound to ExtendedPrice property (not available in intellisense)

4. Run the application

We are here for you

Making our users happy is always a priority for us.