Back to Devexpress

IConnectionStringsProvider Interface

corelibraries-devexpress-dot-data-dot-entity-9ce640bc.md

latest7.6 KB
Original Source

IConnectionStringsProvider Interface

Allows you to resolve a connection string by name for the Entity Framework, XPO, and JSON data sources.

Namespace : DevExpress.Data.Entity

Assembly : DevExpress.Data.v25.2.dll

NuGet Package : DevExpress.Data

Declaration

csharp
public interface IConnectionStringsProvider
vb
Public Interface IConnectionStringsProvider

The following members return IConnectionStringsProvider objects:

LibraryRelated API Members
Cross-Platform Class LibraryEFDataConnection.ConnectionStringsProvider
WinForms ControlsEditFiltersContext.ConnectionStringsProvider
XPO (.NET ORM Library)XPObjectSource.ConnectionStringsProvider

The following members return IConnectionStringsProvider objects:

LibraryRelated API Members
Cross-Platform Class LibraryEFDataConnection.ConnectionStringsProvider
WinForms ControlsEditFiltersContext.ConnectionStringsProvider
XPO (.NET ORM Library)XPObjectSource.ConnectionStringsProvider

Remarks

You can implement a custom IConnectionStringsProvider service and register it to translate a connection name to a connection string for the following data sources:

If the report is bound to the SqlDataSource, use the IConnectionProviderService instead of the IConnectionStringsProvider service.

When a reporting component (the Document Viewer or Report Designer) in your application loads a report, the component attempts to instantiate a data source to which a report is bound. Then the component populates the data source and retrieves data for the report. If the data source connection string is specified only by name (connection parameters are not specified), the reporting component calls a connection string provider service to obtain a connection string. Built-in services retrieve connections from the application configuration files, and you can implement an alternative IConnectionStringsProvider service to specify a connection at runtime.

Example

The following code is a custom service that returns the Entity Framework connection string by name:

csharp
using DevExpress.Data.Entity;

public class CustomConnectionStringsProvider : IConnectionStringsProvider
{
    public static ConnectionStringInfo Connection { get; private set; }
    static CustomConnectionStringsProvider()
    {
        Connection = new ConnectionStringInfo()
        {
            Name = "NorthwindEntities",
            ProviderName = "System.Data.EntityClient",
            RunTimeConnectionString =
            "metadata=res://*/Model1.csdl|" +
            "res://*/Model1.ssdl|" +
            "res://*/Model1.msl;" +
            "provider=System.Data.SqlClient;" +
            "provider connection string=\"data source = localhost;" +
            " initial catalog = Northwind; integrated security = True;" +
            " multipleactiveresultsets = True; app = EntityFramework\""
        };
    }
    private readonly IConnectionStringInfo[] connections;
    public CustomConnectionStringsProvider()
    {
        connections = new IConnectionStringInfo[] { Connection };
    }
    public IConnectionStringInfo[] GetConnections() { return connections; }
    public IConnectionStringInfo[] GetConfigFileConnections() { return connections; }
    public IConnectionStringInfo GetConnectionStringInfo(string connectionStringName) {
        return connections[0];
    }
    public string GetConnectionString(string connectionStringName)
    {
        return connections[0].RunTimeConnectionString;
    }
}
vb
Imports DevExpress.Data.Entity

Public Class CustomConnectionStringsProvider
    Implements IConnectionStringsProvider

    Private Shared privateConnection As ConnectionStringInfo
    Public Shared Property Connection() As ConnectionStringInfo
        Get
            Return privateConnection
        End Get
        Private Set(ByVal value As ConnectionStringInfo)
            privateConnection = value
        End Set
    End Property
    Shared Sub New()
        Connection = New ConnectionStringInfo() With {.Name = "NorthwindEntities", .ProviderName = "System.Data.EntityClient", .RunTimeConnectionString = "metadata=res://*/Model1.csdl|" & "res://*/Model1.ssdl|" & "res://*/Model1.msl;" & "provider=System.Data.SqlClient;" & "provider connection string=""data source = localhost;" & " initial catalog = Northwind; integrated security = True;" & " multipleactiveresultsets = True; app = EntityFramework"""}
    End Sub
    Private ReadOnly connections() As IConnectionStringInfo
    Public Sub New()
        connections = New IConnectionStringInfo() { Connection }
    End Sub
    Public Function GetConnections() As IConnectionStringInfo() Implements IConnectionStringsProvider.GetConnections
        Return connections
    End Function
    Public Function GetConfigFileConnections() As IConnectionStringInfo() Implements IConnectionStringsProvider.GetConfigFileConnections
        Return connections
    End Function
    Public Function GetConnectionStringInfo(ByVal connectionStringName As String) As IConnectionStringInfo Implements IConnectionStringsProvider.GetConnectionStringInfo
        Return connections(0)
    End Function
    Public Function GetConnectionString(ByVal connectionStringName As String) As String Implements IConnectionStringsProvider.GetConnectionString
        Return connections(0).RunTimeConnectionString
    End Function
End Class

You should register the service before the component loads a report, as shown in the following code:

  • Document Viewer

  • Report Designer

In the Report Designer, the IConnectionStringsProvider service populates the list of available Entity Framework connections. The code above allows users to select only EF connections supplied by the IConnectionStringsProvider service when they create new report data sources. The following image demonstrates that the user is restricted to the list of available connections:

See Also

IConnectionStringsProvider Members

ConnectionStringsProvider

DevExpress.Data.Entity Namespace