This is the solution I talked about:
Put this code in a file in your DBSpecific generated project:
using System;
using System.Data;
using SD.LLBLGen.Pro.DQE.Oracle;
using SD.LLBLGen.Pro.ORMSupportClasses;
using System.Text;
// change this namespace to your own
namespace HR.LLBL.MSOracle.Adapter.v31.DatabaseSpecific
{
/// <summary>
/// Custom DataAccessAdapter that avoid case sensitive quereis
/// </summary>
public partial class DataAccessAdapterInsensitive : DataAccessAdapter
{
/// <summary>
/// Return our custom DQE
/// </summary>
/// <returns></returns>
protected override DynamicQueryEngineBase CreateDynamicQueryEngine()
{
return new DynamicQueryEngineInsensitive();
}
}
}
namespace SD.LLBLGen.Pro.DQE.Oracle
{
/// <summary>
/// Custom OracleSpecificCreator that avoids case sensitive aliases
/// </summary>
public class OracleSpecificCreatorInsensitive : OracleSpecificCreator
{
public OracleSpecificCreatorInsensitive()
: base()
{
}
public override string CreateValidAlias(string rawAlias)
{
return rawAlias;
}
}
/// <summary>
/// Custom DynamicQueryEngine that uses our custom OracleSpecificCreator
/// </summary>
public class DynamicQueryEngineInsensitive : DynamicQueryEngine
{
protected override IDbSpecificCreator CreateDbSpecificCreator()
{
return new OracleSpecificCreatorInsensitive();
}
}
}
Then in your own code use DataAccessAdapterInsensitive instead of DataAccessAdapter:
var departments = new EntityCollection<DepartmentEntity>();
using (var adapter = new DataAccessAdapterInsensitive())
{
adapter.FetchEntityCollection(departments, null);
}
I can't think about another solution other than validate the user input.