コード例 #1
0
        protected void btnSaveTable_OnClick(object sender, EventArgs e)
        {
            var model = tableControl.Model;

            var modelConverter  = new TableModelEntityConverter(DataContext);
            var entityConverter = new TableEntityModelConverter(DataContext);
            var columnConverter = new ColumnModelEntityConverter(DataContext);

            var entity = DataContext.LP_Tables.FirstOrDefault(n => n.ID == model.ID);

            if (CopyMode)
            {
                if (entity == null)
                {
                    return;
                }

                var oldModel = entityConverter.Convert(entity);
                oldModel.Status = String.Empty;
                oldModel.Name   = model.Name;

                var newEntity = modelConverter.Convert(oldModel);

                foreach (var columnModel in oldModel.Columns)
                {
                    var columnEntity = columnConverter.Convert(columnModel);
                    newEntity.Columns.Add(columnEntity);
                }

                DataContext.LP_Tables.InsertOnSubmit(newEntity);
            }
            else
            {
                if (entity == null)
                {
                    entity = modelConverter.Convert(model);
                    DataContext.LP_Tables.InsertOnSubmit(entity);
                }
                else
                {
                    modelConverter.FillObject(entity, model);
                }
            }

            DataContext.SubmitChanges();

            FillTablesTree();
        }
コード例 #2
0
        protected void tablesControl_OnEditItem(object sender, GenericEventArgs <Guid> e)
        {
            var entity = DataContext.LP_Tables.FirstOrDefault(n => n.ID == e.Value);

            if (entity == null)
            {
                return;
            }

            var converter = new TableEntityModelConverter(DataContext);
            var model     = converter.Convert(entity);

            tableControl.Model = model;
            CopyMode           = false;

            mpeAddEditTable.Show();
        }
コード例 #3
0
        protected void tablesControl_OnSyncTable(object sender, GenericEventArgs <Guid> e)
        {
            var entity = DataContext.LP_Tables.FirstOrDefault(n => n.ID == e.Value);

            if (entity == null)
            {
                return;
            }

            var converter = new TableEntityModelConverter(DataContext);
            var model     = converter.Convert(entity);

            var synchronizer = new SchemaSynchronizer(model);

            synchronizer.Update();

            entity.Status = "Synchronized";

            DataContext.SubmitChanges();

            FillTablesTree();
        }
コード例 #4
0
        public QueryGenerator(PortalDataContext dbContext, LogicModel logicModel)
        {
            _dbContext             = dbContext;
            _logicModel            = logicModel;
            _sourceType            = _logicModel.SourceType;
            _expressionsLogicModel = logicModel.ExpressionsLogic;

            if (_logicModel.SourceType == "Table")
            {
                var table = dbContext.LP_Tables.First(n => n.ID == _logicModel.SourceID);

                var converter = new TableEntityModelConverter(_dbContext);
                var model     = converter.Convert(table);

                var columns = model.Columns;
                _querySource = GetCorrectName(model.Name);

                var allColumnsQuery = (from n in columns
                                       let m = GetCorrectName(n.Name)
                                               select new KeyValuePair <String, String>(n.Name, m));

                _allColumns = allColumnsQuery.ToDictionary();

                var primaryColumnsQuery = (from n in columns
                                           where n.IsPrimary
                                           let m = GetCorrectName(n.Name)
                                                   select new KeyValuePair <String, String>(n.Name, m));

                _primaryColumns = primaryColumnsQuery.ToDictionary();

                var dbTypesQuery = (from n in columns
                                    let t = GetDataType(n.Type)
                                            let m = GetCorrectName(n.Name)
                                                    select new KeyValuePair <String, SqlDbType>(m, t));

                _dbTypes = dbTypesQuery.ToDictionary();

                _outputColumns = GetOutputs().ToHashSet();
            }
            else if (_logicModel.SourceType == "Logic")
            {
                var logic = dbContext.LP_Logics.First(n => n.ID == _logicModel.SourceID);

                var converter = new LogicEntityModelConverter(_dbContext);
                var model     = converter.Convert(logic);

                var queryGen = new QueryGenerator(_dbContext, model);

                var selectQuery = queryGen.SelectQuery(true);

                _querySource = String.Format("({0})", selectQuery);

                var allColumnsQuery = (from n in queryGen.OutputColumns
                                       let m = GetCorrectName(n)
                                               select new KeyValuePair <String, String>(n, m));

                _allColumns = allColumnsQuery.ToDictionary();

                var dbTypesQuery = (from n in queryGen.OutputColumns
                                    let m = GetCorrectName(n)
                                            let t = queryGen.DbTypes[m]
                                                    select new KeyValuePair <String, SqlDbType>(m, t));

                _dbTypes = dbTypesQuery.ToDictionary();

                _outputColumns = GetOutputs().ToHashSet();
            }

            if (_primaryColumns == null || _primaryColumns.Count == 0)
            {
                _primaryColumns = _allColumns;
            }

            var allParamsQuery = (from n in _allColumns
                                  let p = String.Format("@v{0}", n.Key.ComputeCrc16())
                                          select new KeyValuePair <String, String>(n.Value, p));

            _allColumnsParams = allParamsQuery.ToDictionary();

            var primaryParamsQuery = (from n in _primaryColumns
                                      let p = String.Format("@p{0}", n.Key.ComputeCrc16())
                                              select new KeyValuePair <String, String>(n.Value, p));

            _primaryColumnsParams = primaryParamsQuery.ToDictionary();
        }