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.v24.1.dll
NuGet Packages: DevExpress.Win.PivotGrid, DevExpress.Win.TreeMap, DevExpress.Xpo
NuGet Package: DevExpress.Xpo
Declaration
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.
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));
}
Tip
You can download a complete example here: How to implement a custom XPO connection provider for AdoNetCore.AseClient.