Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 28 additions & 20 deletions Extensions/JointureAddOn/DataAccess/FullSqlQuery.cs
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ protected void FullAppendTableName(StringBuilder sb, DbManager db, Type type)

//TODO Override OracleSqlProvider in order to avoid this mess...
string alias = FullGetTableName(type);
sb.Append(" " + alias);
sb.Append(" " + "T" /*alias*/);
sb.AppendLine();
}

Expand All @@ -141,13 +141,15 @@ protected string FullGetTableName(Type type)
return type.Name;
}

protected void BuildSelectSql(IObjectMapper mapper, StringBuilder sb, DbManager db)
{
protected void BuildSelectSql(IObjectMapper mapper, StringBuilder sb, DbManager db, string tableName = "T")
{
int tableNr = 0;

foreach (IMapper mapField in mapper.PropertiesMapping)
{
if (mapField is ValueMapper)
sb.AppendFormat("\t{0}.{1} {2},\n"
, (mapper).PropertyType.Name,
sb.AppendFormat("\t{0}.{1} {2},\n"
, tableName /* (mapper).PropertyType.Name */,
db.DataProvider.Convert(((ValueMapper) mapField).ColumnName, ConvertType.NameToQueryField),
((ValueMapper) mapField).ColumnAlias
);
Expand All @@ -162,19 +164,23 @@ protected void BuildSelectSql(IObjectMapper mapper, StringBuilder sb, DbManager
continue;
cel = cel.ParentMapping;
}
var objectMapper = (IObjectMapper) mapField;
if (!objectMapper.IsLazy)
BuildSelectSql(objectMapper, sb, db);
var objectMapper = (IObjectMapper) mapField;
if (!objectMapper.IsLazy)
BuildSelectSql(objectMapper, sb, db, tableName + tableNr.ToString());

tableNr++;
}
else
throw new NotImplementedException(mapField.GetType() + " is not yet implemented.");
}
}

protected void AppendJoinTableName(IPropertiesMapping mapper, StringBuilder sb, DbManager db, Type type)
}
protected void AppendJoinTableName(IPropertiesMapping mapper, StringBuilder sb, DbManager db, Type type, string tableName = "T")
{
string parentName = FullGetTableName(type);
Dictionary<string, ValueMapper> valueMappers = mapper.PropertiesMapping.Where(e => e is ValueMapper).Cast<ValueMapper>().ToDictionary(e => e.PropertyName, e => e);
Dictionary<string, ValueMapper> valueMappers = mapper.PropertiesMapping.Where(e => e is ValueMapper).Cast<ValueMapper>().ToDictionary(e => e.PropertyName, e => e);

int tableNr = 0;

foreach (IMapper mapField in mapper.PropertiesMapping)
{
Expand Down Expand Up @@ -214,15 +220,17 @@ protected void AppendJoinTableName(IPropertiesMapping mapper, StringBuilder sb,
: db.DataProvider.Convert(childName, ConvertType.NameToQueryTable).ToString());

sb.AppendFormat("\tFULL OUTER JOIN {0} {1} ON {2}.{3}={4}.{5}\n",
childFullName,
childAlias,
parentName,
childFullName,
tableName + tableNr.ToString() /*childAlias*/,
tableName /*parentName*/,
parentDbField,
childAlias,
tableName + tableNr.ToString() /*childAlias*/,
childDbField
);

AppendJoinTableName((IPropertiesMapping) mapField, sb, db, mapField.PropertyType);
);

AppendJoinTableName((IPropertiesMapping)mapField, sb, db, mapField.PropertyType, tableName + tableNr.ToString());

tableNr++;
}
}

Expand Down Expand Up @@ -262,7 +270,7 @@ protected void AddWherePK(DbManager db, SqlQueryInfo query, StringBuilder sb, in
ToString(),
valueMapper.ColumnName);

sb.AppendFormat("\t{0}.{1} = ", tableAlias,
sb.AppendFormat("\t{0}.{1} = ", "T" /* tableAlias */,
db.DataProvider.Convert(p.FieldName, ConvertType.NameToQueryField));

if (nParameter < 0)
Expand Down