Entity Framework Data Source
- 4 minutes to read
This tutorial shows how to add the DashboardEFDataSource to a data source storage and make it available to users. The tutorial uses the MDF database.
In your application, add the NWind.mdf database to the App_Data folder from the C:\Users\Public\Documents\DevExpress Demos 20.2\Components\Data directory.
In Web.config, specify a connection string to the database.
<configuration> <connectionStrings> <add name="NWindConnectionString" connectionString="data source=(localdb)\mssqllocaldb;attachdbfilename=|DataDirectory|\NWind.mdf;integrated security=True;connect timeout=120" providerName="System.Data.SqlClient" /> </connectionStrings> </configuration>
- Right-click the project and select Add | ADO.NET Entity Data Model. Specify OrdersContext as the model name and select the Code First from database model type in the invoked wizard.
- Select the added NWindConnectionString as a data connection for the created model.
On the next page, specify which tables and view to include in your model. In this tutorial, the data model is based on the OrderDetail table. The code below shows the generated data model.
C#:
namespace WebFormsDashboardDataSources { using System.Data.Entity; public partial class OrdersContext: DbContext { public OrdersContext() : base("name=OrdersContext") { } public virtual DbSet<OrderDetail> OrderDetails { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<OrderDetail>() .Property(e => e.UnitPrice) .HasPrecision(10, 4); } } }
Visual Basic:
Imports System.Data.Entity Namespace WebFormsDashboardDataSources Partial Public Class OrdersContext Inherits DbContext Public Sub New() MyBase.New("name=OrdersContext") End Sub Private privateOrderDetails As DbSet(Of OrderDetail) Public Overridable Property OrderDetails() As DbSet(Of OrderDetail) Get Return privateOrderDetails End Get Set(ByVal value As DbSet(Of OrderDetail)) privateOrderDetails = value End Set End Property Protected Overrides Sub OnModelCreating(ByVal modelBuilder As DbModelBuilder) modelBuilder.Entity(Of OrderDetail)().Property(Function(e) e.UnitPrice).HasPrecision(10, 4) End Sub End Class End Namespace
In the Default.aspx.cs (or .vb) file, create a public method that returns the configured dashboard’s data source storage (DataSourceInMemoryStorage) and define the EF data source.
using System; using DevExpress.DashboardCommon; using DevExpress.DashboardWeb; using DevExpress.DataAccess.EntityFramework; public DataSourceInMemoryStorage CreateDataSourceStorage() { DataSourceInMemoryStorage dataSourceStorage = new DataSourceInMemoryStorage(); DashboardEFDataSource efDataSource = new DashboardEFDataSource("EF Core Data Source"); efDataSource.ConnectionParameters = new EFConnectionParameters(typeof(OrdersContext)); dataSourceStorage.RegisterDataSource("efDataSource", efDataSource.SaveToXml()); return dataSourceStorage; }
Call the ASPxDashboard.SetDataSourceStorage method to configure the data source storage. Use the created CreateDataSourceStorage method as the SetDataSourceStorage parameter.
The EF Data Source is now available in the Web Dashboard:
Users can now bind dashboard items to data in the Web Dashboard’s UI.
Example
The example shows how to make a set of data sources available for users in the Web Dashboard application.