All docs
V21.2
21.2
21.1
20.2
20.1
19.2
19.1
The page you are viewing does not exist in version 19.1. This link will take you to the root page.
18.2
The page you are viewing does not exist in version 18.2. This link will take you to the root page.
18.1
The page you are viewing does not exist in version 18.1. This link will take you to the root page.
17.2
The page you are viewing does not exist in version 17.2. This link will take you to the root page.

XPO Data Source

  • 2 minutes to read

This tutorial shows how to add the DashboardXpoDataSource to data source storage and make it available to users. This tutorial uses XPO Business Model based on the SQLite database.

  1. In your application, create the Data folder and add the nwind.db database to it from the following folder:

    C:\Users\Public\Documents\DevExpress Demos 21.2\Components\Data

  2. Create an XPO model based on the SQLite nwind.db database.

    using DevExpress.Xpo;
    
    namespace WebDashboardApp {
        [Persistent("Categories"), DeferredDeletion(false)]
        public class Category : XPCustomObject {
            int categoryId;
            string categoryName;
            string description;
            [Key]
            public int CategoryID {
                get { return categoryId; }
                set { SetPropertyValue<int>("CategoryID", ref categoryId, value); }
            }
            public string CategoryName {
                get { return categoryName; }
                set { SetPropertyValue<string>("CategoryName", ref categoryName, value); }
            }
            public string Description {
                get { return description; }
                set { SetPropertyValue<string>("Description", ref description, value); }
            }
        }
    }
    
  3. In appsettings.json, specify a connection string to the SQLite database.

    {
        //...
        "ConnectionStrings": {
            "NWindConnectionString": "XpoProvider=SQLite;Data Source=Data/nwind.db",            
        }
    }
    
  4. In the Startup.cs file, create a public method that returns the configured dashboard’s data source storage (DataSourceInMemoryStorage) and define the XPO data source.

    using DevExpress.DashboardCommon;
    
    public DataSourceInMemoryStorage CreateDataSourceStorage() {
        DataSourceInMemoryStorage dataSourceStorage = new DataSourceInMemoryStorage();
    
        DashboardXpoDataSource xpoDataSource = new DashboardXpoDataSource("XPO Data Source");
        xpoDataSource.ConnectionStringName = "NWindConnectionString";
        xpoDataSource.SetEntityType(typeof(Category));
        dataSourceStorage.RegisterDataSource("xpoDataSource", xpoDataSource.SaveToXml());
    
        return dataSourceStorage;
    }
    
  5. Use the DashboardConfigurator.SetDataSourceStorage method to set the data source storage and pass the created CreateDataSourceStorage method to use the return value as a parameter.

    using DevExpress.AspNetCore;
    using DevExpress.DashboardAspNetCore;
    using DevExpress.DashboardWeb;
    
    public void ConfigureServices(IServiceCollection services) {
        services.AddScoped<DashboardConfigurator>((IServiceProvider serviceProvider) => {
            DashboardConfigurator configurator = new DashboardConfigurator();
            // ...
            configurator.SetDataSourceStorage(CreateDataSourceStorage());
    
            return configurator;
        });
    }
    

The XPO 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.

View Example: How to Register Data Sources for ASP.NET Core Dashboard Control