public ExpressionHelper(Expression predicateExpression, SqlGeneratorHelper parameterNameGenerator) { if (predicateExpression == null) { throw new Exception("Predicate expression can't be null."); } if (parameterNameGenerator == null) { parameterNameGenerator = new SqlGeneratorHelper(); } _paramNameGenerator = parameterNameGenerator; this.Visit(predicateExpression); }
public void Dispose() { _paramNameGenerator = null; _predicateString = null; _comparer = null; }
private void MapTablesToEntities(IDbConnection dbconnection, Assembly[] assembliesOfModelTypes = null) { Assembly[] assemblies; var sqlHelper = new SqlGeneratorHelper(); var entityReader = new DefaultEntityReader(); var service = PluralizationService.CreateService(CultureInfo.CurrentCulture); Tables = DefaultDatabaseMapper.MapDatabase(dbconnection, TargetDatabases); if (assembliesOfModelTypes != null) { assemblies = assembliesOfModelTypes; } else { assemblies = AppDomain.CurrentDomain.GetAssemblies(); } var entityTypes = entityReader.ReadEntities(assemblies).ToList(); var typeDefault = default(Type); foreach (var dbObject in TargetDatabases) { var dbTables = Tables.Where(t => string.Equals(t.Database, dbObject.Name, StringComparison.InvariantCultureIgnoreCase)) .ToArray(); foreach (var tbl in dbTables) { Type selectedType = null; var typeName = ""; if (dbObject.TableNamesInPlural) { typeName = service.Singularize(tbl.Name); } else { typeName = tbl.Name; } if (!string.IsNullOrEmpty(dbObject.NameSpace)) { selectedType = entityTypes.FirstOrDefault(t => string.Equals(t.Name, typeName, StringComparison.CurrentCultureIgnoreCase) && string.Equals(t.Namespace, dbObject.NameSpace, StringComparison.CurrentCultureIgnoreCase)); } else { selectedType = entityTypes.FirstOrDefault(t => string.Equals(t.Name, typeName, StringComparison.CurrentCultureIgnoreCase)); } if (selectedType == typeDefault) { #if DEBUG Debug.WriteLine(string.Format("Table {0}.{1}.{2} was not mapped", tbl.Database, tbl.Schema, tbl.Name)); #endif continue; } var tableAlias = sqlHelper.GetTableAlias(selectedType); MapEntity(selectedType, tbl.Name, tableAlias); entityTypes.RemoveAt(entityTypes.IndexOf(selectedType)); } } }