This is a migrated thread and some comments may be shown as answers.

Multiple FluentMetadataSources for One Model

0 Answers 30 Views
Development (API, general questions)
This is a migrated thread and some comments may be shown as answers.
This question is locked. New answers and comments are not allowed.
Cory
Top achievements
Rank 1
Cory asked on 22 Feb 2017, 08:16 PM

Hi,

I have an application that must work with both an MsSql database and an Oracle database (never at the same time). The two databases are essentially the same with a few minor differences (e.g. view names, field names, date fields instead of datetimes). Unfortunately, I am unable to the modify the structure of these databases.

For this reason, I've created two classes which inherit from the FluentMetadataSource classes, one for each backend. Both of them implement the exact same classes and properties, they're just mapped slightly differently. I'd like to have a single model which implements either the MsSql metadata or the Oracle metadata depending on a config file setting. E.g.:

private static FluentMetadataSource metadataSource = GetMetadataSource();
 
private static FluentMetadataSource GetMetadataSource()
{
    if (ConfigurationConstants.DatabaseBackend.ToLower() == "mssql")
        return new SqlMetadataSource();
    else if (ConfigurationConstants.DatabaseBackend.ToLower() == "oracle")
        return new OracleMetadataSource();
    else
        throw new ArgumentException("Invalid configuration for DatabaseType");
}

 

However, any table/view/column name changes between the two metadata classes get picked up by the enhancer and I am unable to compile:

Found explicit primitive change to 'Name' which says that the old value etc., etc.

Is it possible to implement a single model with a single connection string that implements one of two possible FluentMetadataSources? Keep in mind that I would only ever need the model to implement ONE of the metadata classes. Users will have either an MsSql database OR an Oracle database, never both.

Any help would be appreciated, 

-Cory

Tags
Development (API, general questions)
Asked by
Cory
Top achievements
Rank 1
Share this question
or