Back to Devexpress

CannotFindAppropriateConnectionProviderException Class

xpo-devexpress-dot-xpo-dot-exceptions-5c780ece.md

latest4.6 KB
Original Source

CannotFindAppropriateConnectionProviderException Class

Occurs when a connection string or an IDbConnection object is not compatible with data store providers.

Namespace : DevExpress.Xpo.Exceptions

Assembly : DevExpress.Xpo.v25.2.dll

NuGet Package : DevExpress.Xpo

Declaration

csharp
public class CannotFindAppropriateConnectionProviderException :
    Exception
vb
Public Class CannotFindAppropriateConnectionProviderException
    Inherits Exception

Remarks

The GetConnectionProvider method can throw a CannotFindAppropriateConnectionProvider exception if none of the data store providers (an IDataStore implementations) can accept parameter values ( connectionString or connection ).

Solution

XPO supplies a set of data store providers: Database Systems Supported by XPO. Most of them need the XpoProvider attribute in the connection string. To get a fully qualified connection string, use the GetConnectionString method of a corresponding connection provider.

A custom data store provider should implement additional static methods to support the GetConnectionProvider method. The DataStoreCreationFromConnectionDelegate and DataStoreCreationFromStringDelegate delegates describe the signature and return types of these methods. Use the RegisterDataStoreProvider method to register them.

csharp
public static IDataStore CreateProviderFromString(string connectionString, AutoCreateOption autoCreateOption, 
  out IDisposable[] objectsToDisposeOnDisconnect) {
    IDbConnection connection = CreateConnection(connectionString);
    objectsToDisposeOnDisconnect = new IDisposable[] { connection };
    return CreateProviderFromConnection(connection, autoCreateOption);
}
public static IDataStore CreateProviderFromConnection(IDbConnection connection, AutoCreateOption autoCreateOption) {
    return new AseClientConnectionProvider(connection, autoCreateOption);
}
static AseClientConnectionProvider() {
    RegisterDataStoreProvider(XpoProviderTypeString, new DataStoreCreationFromStringDelegate(CreateProviderFromString));
    RegisterDataStoreProvider(AseConnectionShortName, new DataStoreCreationFromConnectionDelegate(CreateProviderFromConnection));
}
vb
Public Shared Function CreateProviderFromString(ByVal connectionString As String, ByVal autoCreateOption As AutoCreateOption, _
   ByRef objectsToDisposeOnDisconnect() As IDisposable) As IDataStore
    Dim connection As IDbConnection = CreateConnection(connectionString)
    objectsToDisposeOnDisconnect = New IDisposable() { connection }
    Return CreateProviderFromConnection(connection, autoCreateOption)
End Function
Public Shared Function CreateProviderFromConnection(ByVal connection As IDbConnection, ByVal autoCreateOption As AutoCreateOption) As IDataStore
    Return New AseClientConnectionProvider(connection, autoCreateOption)
End Function
Shared Sub New()
    RegisterDataStoreProvider(XpoProviderTypeString, New DataStoreCreationFromStringDelegate(CreateProviderFromString))
    RegisterDataStoreProvider(AseConnectionShortName, New DataStoreCreationFromConnectionDelegate(CreateProviderFromConnection))
End Sub

Tip

You can download a complete example here: How to implement a custom XPO connection provider for AdoNetCore.AseClient.

Inheritance

Object Exception CannotFindAppropriateConnectionProviderException

See Also

CannotFindAppropriateConnectionProviderException Members

DevExpress.Xpo.Exceptions Namespace