Extend model with additional property (Blazor)
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