Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 public void Dispose()
 {
     _paramNameGenerator = null;
     _predicateString    = null;
     _comparer           = null;
 }
Esempio n. 3
0
        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));
                }
            }
        }