I am trying to create a new object of the OracleConnectionStringBuilder or the SqlConnectionStringBuilder depending on the database providor sent to the function.
Can't figure out how to do that in the shortest(and readable) manner possible.
I start with:
var isIntegratedSecuritySet = string.IsNullOrEmpty(UserId) || string.IsNullOrEmpty(Password);
var connBuilder = new SqlConnectionStringBuilder()
{
DataSource = DataSource,
UserID = UserId,
Password = Password,
InitialCatalog = InitialCatalog,
ConnectTimeout = 15,
IntegratedSecurity = isIntegratedSecuritySet
};
return connBuilder.ConnectionString;
}
But now Oracle doesn't have IntegratedSecurity, it has PersistSecurityInfo.
So I try this:
var isIntegratedSecuritySet = string.IsNullOrEmpty(UserId) || string.IsNullOrEmpty(Password);
var connBuilder = new DbConnectionStringBuilder();
try
{
if (Providor.Equals(DatabaseProvidors.Oracle))
{
connBuilder = new OracleConnectionStringBuilder()
{
PersistSecurityInfo = isIntegratedSecuritySet
};
}
else if (Providor.Equals(DatabaseProvidors.SqlServer))
{
connBuilder = new SqlConnectionStringBuilder()
{
IntegratedSecurity = isIntegratedSecuritySet
};
}
But now I need to cast the properties to one or the other
((SqlConnectionStringBuilder)connBuilder).DataSource = DataSource;
etc..
What can I do to be able to do that without having to explicitly define both in full form like this:
var isIntegratedSecuritySet = string.IsNullOrEmpty(UserId) || string.IsNullOrEmpty(Password);
try
{
if (Providor.Equals(DatabaseProvidors.Oracle))
{
var connBuilder = new OracleConnectionStringBuilder()
{
DataSource = DataSource,
UserID = UserId,
Password = Password,
ConnectionTimeout = 15,
PersistSecurityInfo = isIntegratedSecuritySet
};
//if (InitialCatalog != null)
// connBuilder.InitialCatalog = InitialCatalog;
return connBuilder.ConnectionString;
}
else if (Providor.Equals(DatabaseProvidors.SqlServer))
{
var connBuilder = new SqlConnectionStringBuilder()
{
DataSource = DataSource,
UserID = UserId,
Password = Password,
ConnectTimeout = 15,
IntegratedSecurity = isIntegratedSecuritySet
};
if (InitialCatalog != null)
connBuilder.InitialCatalog = InitialCatalog;
return connBuilder.ConnectionString;
}
}