Пример #1
0
 public SqlTable (ITableInfo tableInfo, JoinSemantics joinSemantics)
     : base (tableInfo.ItemType, joinSemantics)
 {
   ArgumentUtility.CheckNotNull ("tableInfo", tableInfo);
   
   _tableInfo = tableInfo;
 }
Пример #2
0
        private void Gen(StringBuilder sb, string tmp, ITableInfo tbInfo)
        {
            string code = codeGen.Gen(tmp, tbInfo);

            bool sqlLine = false;
            bool sqlBegin = false;
            using (StringReader sr = new StringReader(code))
            {
                string line;
                while ((line = sr.ReadLine()) != null)
                {
                    if (line.IndexOf(" sql = ") > -1 && sqlBegin == false)
                    {
                        sqlBegin = true;
                        sqlLine = true;
                        sb.Append("        ");
                    }

                    if (!string.IsNullOrEmpty(line) && !sqlLine)
                    {
                        sb.Append("        ");
                    }
                    sb.Append(line);
                    sb.Append(Environment.NewLine);

                    if (sqlBegin && line.EndsWith("\";"))
                    {
                        sqlBegin = false;
                        sqlLine = false;
                    }
                }//while
            }//using

            sb.AppendLine();
        }
Пример #3
0
        public string Build(ITableInfo tInfo, string ns, string webns, string modalName)
        {
            PageViewModel pvModel = new PageViewModel();
            pvModel.NameSpacePR = ns;
            pvModel.WebProjNameSpace = webns;
            pvModel.DBTable = tInfo;
            pvModel.DatabaseName = tInfo.Database.Name;
            pvModel.ModalName = modalName;

            _build("Model.cshtml", typeof(PageViewModel), pvModel, tInfo.PascalName + ".cs");
            _build("Map.cshtml", typeof(PageViewModel), pvModel, tInfo.PascalName + "Map.cs");
            _build("Repository.cshtml", typeof(PageViewModel), pvModel, tInfo.PascalName + "Repository.cs");
            _build("DTO.cshtml", typeof(PageViewModel), pvModel, tInfo.PascalName + "DTO.cs");
            _build("IService.cshtml", typeof(PageViewModel), pvModel, "I" + tInfo.PascalName + "Service.cs");
            _build("Service.cshtml", typeof(PageViewModel), pvModel, tInfo.PascalName + "Service.cs");

            _build("Controller.cshtml", typeof(PageViewModel), pvModel, tInfo.PascalName + "Controller.cs");
            _build("ViewModel.cshtml", typeof(PageViewModel), pvModel, tInfo.PascalName + "ViewModel.cs");
            _build("Index.cshtml", typeof(PageViewModel), pvModel, tInfo.PascalName + "\\Index.cshtml");
            _build("Add.cshtml", typeof(PageViewModel), pvModel, tInfo.PascalName + "\\Add.cshtml");
            _build("Edit.cshtml", typeof(PageViewModel), pvModel, tInfo.PascalName + "\\Edit.cshtml");

            _build("readme.cshtml", typeof(PageViewModel), pvModel, "readme.txt");

            return this._targetFolder;
        }
Пример #4
0
        private void BindUI(IDatabaseInfo db)
        {
            this.Database = db;
            this.SelectedChildTable = null;
            this.SelectedParentTable = null;
            this.cbForeignKey.Items.Clear();
            this.cbForeignKey.Text = "";
            this.gvFields.Rows.Clear();

            cbTablesForChild.Items.Clear();
            cbTablesForParent.Items.Clear();
            cbTablesForChild.Text = "";
            cbTablesForParent.Text = "";

            if (db != null)
            {
                foreach (var table in db.Tables)
                {
                    cbTablesForChild.Items.Add(table.Name);
                    cbTablesForParent.Items.Add(table.Name);
                }

                AspnetMVCSetting setting = SettingStore.Instance.Get<AspnetMVCSetting>(db.Name + "_aspnetmvc.xml");
                if (setting != null)
                {
                    txtNamespace.Text = setting.Namespace;
                    txtWebProjNameSpace.Text = setting.WebProjNameSpace;
                }
            }
        }
Пример #5
0
 public QueryTranslator(ITableInfo tableInfo)
 {
     _sb = new StringBuilder();
     _limit = new StringBuilder();
     _offset = new StringBuilder();
     _orderBy = new StringBuilder();
     _tableInfo = tableInfo;
 }
    public static ITableInfo ApplyContext (ITableInfo tableInfo, SqlExpressionContext expressionContext, IMappingResolutionStage stage, IMappingResolutionContext mappingResolutionContext)
    {
      ArgumentUtility.CheckNotNull ("tableInfo", tableInfo);
      ArgumentUtility.CheckNotNull ("stage", stage);
      ArgumentUtility.CheckNotNull ("mappingResolutionContext", mappingResolutionContext);

      var visitor = new SqlContextTableInfoVisitor (stage, expressionContext, mappingResolutionContext);
      return tableInfo.Accept (visitor);
    }
Пример #7
0
        public InsertInfo Create(ITableInfo tableInfo)
        {
            var columnsWillBeInsert = GetColumnsWillBeInsert(tableInfo);

            return(new InsertInfo
            {
                Sql = GetSql(tableInfo, columnsWillBeInsert),
                SqlParameters = columnsWillBeInsert
            });
        }
    public static IResolvedTableInfo ResolveTableInfo (ITableInfo tableInfo, IMappingResolver resolver, UniqueIdentifierGenerator generator, IMappingResolutionStage stage, IMappingResolutionContext context)
    {
      ArgumentUtility.CheckNotNull ("tableInfo", tableInfo);
      ArgumentUtility.CheckNotNull ("resolver", resolver);
      ArgumentUtility.CheckNotNull ("stage", stage);
      ArgumentUtility.CheckNotNull ("context", context);

      var visitor = new ResolvingTableInfoVisitor (resolver, generator, stage, context);
      return (IResolvedTableInfo) tableInfo.Accept (visitor);
    }
Пример #9
0
        public void Column_Names()
        {
            ITableInfo personInfo   = tableBuilder.GetConfig <Person>();
            ITableInfo employeeInfo = tableBuilder.GetConfig <Employee>();
            ITableInfo deptInfo     = tableBuilder.GetConfig <Department>();

            Assert.Equal(new string[] { "Id", "Name", "SurName" }, personInfo.ColumnNames);
            Assert.Equal(new string[] { "Id", "Salary" }, employeeInfo.ColumnNames);
            Assert.Equal(new string[] { "Id", "Name" }, deptInfo.ColumnNames);
        }
Пример #10
0
        public void Schema_Name()
        {
            ITableInfo personInfo   = tableBuilder.GetConfig <Person>();
            ITableInfo employeeInfo = tableBuilder.GetConfig <Employee>();
            ITableInfo deptInfo     = tableBuilder.GetConfig <Department>();

            Assert.Null(personInfo.Schema);
            Assert.Null(employeeInfo.Schema);
            Assert.Null(deptInfo.Schema);
        }
Пример #11
0
        public void Table_Name()
        {
            ITableInfo personInfo   = tableBuilder.GetConfig <Person>();
            ITableInfo employeeInfo = tableBuilder.GetConfig <Employee>();
            ITableInfo deptInfo     = tableBuilder.GetConfig <Department>();

            Assert.Equal("Person", personInfo.TableName);
            Assert.Equal("Employee", employeeInfo.TableName);
            Assert.Equal("Department", deptInfo.TableName);
        }
Пример #12
0
        public void Columns()
        {
            ITableInfo personInfo = tableBuilder.GetConfig <Person>();
            ITableInfo deptInfo   = tableBuilder.GetConfig <Department>();

            Assert.Equal(new string[] { "Guid", "Id", "Name", "SurName", "Employee.Address.Street", "Employee.Address.City",
                                        "Employee.Salary", "Employee.DepartmentId", "Employee.Department.Guid", "Employee.Department.Id",
                                        "Employee.Image" }, personInfo.Columns);
            Assert.Equal(new string[] { "Guid", "Id", "Name", "Boss.Guid", "Boss.Id", "Tags" }, deptInfo.Columns);
        }
        public void Foreign_Keys()
        {
            ITableInfo personInfo   = tableBuilder.GetConfig <Person>();
            ITableInfo employeeInfo = tableBuilder.GetConfig <Employee>();
            ITableInfo deptInfo     = tableBuilder.GetConfig <Department>();

            Assert.Equal(new string[] { }, personInfo.ForeignKeys);
            Assert.Equal(new string[] { "DepartmentId", "Department.Id" }, employeeInfo.ForeignKeys);
            Assert.Equal(new string[] { "Boss.Id" }, deptInfo.ForeignKeys);
        }
        public void Primary_Keys()
        {
            ITableInfo personInfo   = tableBuilder.GetConfig <Person>();
            ITableInfo employeeInfo = tableBuilder.GetConfig <Employee>();
            ITableInfo deptInfo     = tableBuilder.GetConfig <Department>();

            Assert.Equal(new string[] { "Id" }, personInfo.PrimaryKeys);
            Assert.Equal(new string[] { "Id" }, employeeInfo.PrimaryKeys);
            Assert.Equal(new string[] { "Id" }, deptInfo.PrimaryKeys);
        }
Пример #15
0
        public void Column_Names()
        {
            ITableInfo personInfo = tableBuilder.GetConfig <Person>();
            ITableInfo deptInfo   = tableBuilder.GetConfig <Department>();

            Assert.Equal(new string[] { "Id", "Guid", "Name", "SurName", "EmployeeAddressStreet", "EmployeeAddressCity",
                                        "EmployeeSalary", "EmployeeDepartmentId", "EmployeeDepartmentGuid", "EmployeeImage" },
                         personInfo.ColumnNames);
            Assert.Equal(new string[] { "Id", "Guid", "Name", "BossGuid" }, deptInfo.ColumnNames);
        }
Пример #16
0
        public void Column_Names_Dic()
        {
            ITableInfo personInfo   = tableBuilder.GetConfig <Person>();
            ITableInfo employeeInfo = tableBuilder.GetConfig <Employee>();
            ITableInfo bossInfo     = tableBuilder.GetConfig <Boss>();
            ITableInfo deptInfo     = tableBuilder.GetConfig <Department>();

            Assert.Equal(new Dictionary <string, string>
            {
                ["Id"]             = "Id",
                ["Guid"]           = "Guid",
                ["Name"]           = "Name",
                ["SurName"]        = "SurName",
                ["Address.Street"] = "AddressStreet",
                ["Address.City"]   = "AddressCity"
            }, personInfo.ColumnNamesDic);

            Assert.Equal(new Dictionary <string, string>
            {
                ["Id"]             = "Id",
                ["Guid"]           = "Guid",
                ["Name"]           = "Name",
                ["SurName"]        = "SurName",
                ["Address.Street"] = "AddressStreet",
                ["Address.City"]   = "AddressCity",
                ["Salary"]         = "Salary",
                ["DepartmentId"]   = "DepartmentId",
                ["Department.Id"]  = "DepartmentId",
                ["Image"]          = "Image"
            }, employeeInfo.ColumnNamesDic);

            Assert.Equal(new Dictionary <string, string>
            {
                ["Id"]             = "Id",
                ["Guid"]           = "Guid",
                ["Name"]           = "Name",
                ["SurName"]        = "SurName",
                ["Address.Street"] = "AddressStreet",
                ["Address.City"]   = "AddressCity",
                ["Salary"]         = "Salary",
                ["DepartmentId"]   = "DepartmentId",
                ["Department.Id"]  = "DepartmentId",
                ["Image"]          = "Image",
                ["Bonus"]          = "Bonus"
            }, bossInfo.ColumnNamesDic);

            Assert.Equal(new Dictionary <string, string>
            {
                ["Id"]      = "Id",
                ["Guid"]    = "Guid",
                ["Name"]    = "Name",
                ["Boss.Id"] = "BossId",
                ["Tags"]    = "Tags"
            }, deptInfo.ColumnNamesDic);
        }
Пример #17
0
        /// <summary>
        /// 生成insert语句,
        /// 计算列和自增列不插入
        /// </summary>
        /// <param name="table"></param>
        /// <returns></returns>
        public static string GetInsertSql(ITableInfo table)
        {
            StringBuilder sbSql = new StringBuilder();

            sbSql.Append("\r\nINSERT INTO [");
            sbSql.Append(table.Schema);
            sbSql.Append("].[");
            sbSql.Append(table.RawName);
            sbSql.Append("]\r\n");
            sbSql.Append(' ', 11);
            sbSql.Append("(");

            int len = table.Columns.Count;
            for (int i = 0; i < len; i++)
            {
                IColumnInfo col = table.Columns[i];
                //计算列和自增列不插入
                if (col.Identity || col.Computed)
                    continue;

                sbSql.AppendFormat("[{0}]", col.RawName);
                if (i != len - 1)
                {
                    sbSql.Append("\r\n");
                    sbSql.Append(' ', 11);
                    sbSql.Append(",");
                }
            }

            sbSql.Append(")\r\n");
            sbSql.Append(' ', 5);
            sbSql.Append("VALUES\r\n");
            sbSql.Append(' ', 11);
            sbSql.Append("(");

            for (int i = 0; i < len; i++)
            {
                IColumnInfo col = table.Columns[i];
                //计算列和自增列不插入
                if (col.Identity || col.Computed)
                    continue;

                sbSql.AppendFormat("@{0}", col.Name);
                if (i != len - 1)
                {
                    sbSql.Append("\r\n");
                    sbSql.Append(' ', 11);
                    sbSql.Append(",");
                }
            }

            sbSql.Append(")\r\n");

            return sbSql.ToString();
        }
Пример #18
0
 public void LoadTableNode(TreeNode node, ITableInfo obj)
 {
     node.Tag                = obj;
     node.Text               = GetObjectName(obj);
     node.ImageIndex         = (int)TreeViewIcons.table;
     node.SelectedImageIndex = (int)TreeViewIcons.table;
     if (_showColumns)
     {
         AddColumns(node, obj.Columns);
     }
 }
Пример #19
0
        /// <summary>
        /// Compiles the fragment.
        /// </summary>
        /// <param name="queryBuilder">The query builder.</param>
        /// <param name="engine">The engine.</param>
        public virtual void Compile(QueryBuilder queryBuilder, IEngine engine)
        {
            ITableInfo tableInfo = engine.GetInfo(Type);

            if (!string.IsNullOrEmpty(tableInfo.Schema))
            {
                queryBuilder.WriteName(tableInfo.Schema).Write(".");
            }

            queryBuilder.WriteName(tableInfo.TableName);
        }
Пример #20
0
 /// <inheritdoc/>
 public void BreakLinkBetween(DataAccessCredentials credentials, ITableInfo tableInfo, DataAccessContext context)
 {
     _repository.Delete(
         "DELETE FROM DataAccessCredentials_TableInfo WHERE DataAccessCredentials_ID = @cid AND TableInfo_ID = @tid and Context =@context",
         new Dictionary <string, object>()
     {
         { "cid", credentials.ID },
         { "tid", tableInfo.ID },
         { "context", context },
     });
 }
        public void Reset_Type_Generic()
        {
            tableBuilder.Add <Person>()
            .PrimaryKey(x => x.Guid);

            tableBuilder.Reset <Person>();

            ITableInfo personInfo = tableBuilder.GetConfig <Person>();

            Assert.Equal(new string[] { "Id" }, personInfo.PrimaryKeys);
        }
        public void Ignore_Delegate()
        {
            tableBuilder.AddProcessor(new DefaultMetadataProcessor()
                                      .Ignore(x => x.EndsWith("2") || x.EndsWith("4") || x.EndsWith("6")));

            ITableInfo personInfo   = tableBuilder.GetConfig <Person>();
            ITableInfo employeeInfo = tableBuilder.GetConfig <Employee>();
            ITableInfo deptInfo     = tableBuilder.GetConfig <Department>();

            Assert.Equal(new Dictionary <string, IDictionary <string, object> >
            {
                ["Id"] = new Dictionary <string, object>
                {
                    ["Id1"] = "Id1_Base",
                    ["Id3"] = "Id3_Person",
                    ["Id5"] = "Id5_Person"
                },
                ["Address.Street"] = new Dictionary <string, object>
                {
                    ["AddressStreet1"] = "AddressStreet1_Person",
                    ["AddressStreet3"] = "AddressStreet3_Person"
                }
            }, personInfo.MemberMetadata);

            Assert.Equal(new Dictionary <string, IDictionary <string, object> >
            {
                ["Id"] = new Dictionary <string, object>
                {
                    ["Id5"] = "Id5_Employee"
                },
                ["Address.Street"] = new Dictionary <string, object>
                {
                    ["AddressStreet3"] = "AddressStreet3_Employee"
                },
                ["Department"] = new Dictionary <string, object>
                {
                    ["Department1"] = "Department1_Employee"
                }
            }, employeeInfo.MemberMetadata);

            Assert.Equal(new Dictionary <string, IDictionary <string, object> >
            {
                ["Id"] = new Dictionary <string, object>
                {
                    ["Id1"] = "Id1_Base",
                    ["Id3"] = "Id3_Department",
                    ["Id5"] = "Id5_Department"
                },
                ["Employees"] = new Dictionary <string, object>
                {
                    ["Employees1"] = "Employees1_Department"
                }
            }, deptInfo.MemberMetadata);
        }
        public void Reset_Type()
        {
            tableBuilder.Add(typeof(Person))
            .PrimaryKey("Guid");

            tableBuilder.Reset(typeof(Person));

            ITableInfo personInfo = tableBuilder.GetConfig <Person>();

            Assert.Equal(new string[] { "Id" }, personInfo.PrimaryKeys);
        }
Пример #24
0
        protected override void MutilateTable(IDataLoadEventListener job, ITableInfo tableInfo, DiscoveredTable table)
        {
            var server = table.Database.Server;

            job.OnNotify(this, new NotifyEventArgs(ProgressEventType.Information, "About to run Coalese on table " + table));

            var allCols = table.DiscoverColumns();

            var pkColumnInfos = tableInfo.ColumnInfos.Where(c => c.IsPrimaryKey).Select(c => c.GetRuntimeName()).ToArray();
            var nonPks        = allCols.Where(c => !pkColumnInfos.Contains(c.GetRuntimeName())).ToArray();
            var pks           = allCols.Except(nonPks).ToArray();

            if (!pkColumnInfos.Any())
            {
                throw new Exception("Table '" + tableInfo + "' has no IsPrimaryKey columns");
            }

            if (allCols.Length == pkColumnInfos.Length)
            {
                job.OnNotify(this, new NotifyEventArgs(ProgressEventType.Warning, "Skipping Coalesce on table " + table + " because it has no non primary key columns"));
                return;
            }

            int affectedRows = 0;

            using (var con = table.Database.Server.GetConnection())
            {
                con.Open();

                if (CreateIndex)
                {
                    using (var idxCmd =
                               server.GetCommand(
                                   string.Format(@"CREATE INDEX IX_PK_{0} ON {0}({1});", table.GetRuntimeName(),
                                                 string.Join(",", pks.Select(p => p.GetRuntimeName()))), con))
                    {
                        idxCmd.CommandTimeout = Timeout;
                        idxCmd.ExecuteNonQuery();
                    }
                }

                //Get an update command for each non primary key column
                foreach (DiscoveredColumn nonPk in nonPks)
                {
                    var sql = GetCommand(table, pks, nonPk);

                    var cmd = server.GetCommand(sql, con);
                    cmd.CommandTimeout = Timeout;
                    affectedRows      += cmd.ExecuteNonQuery();
                }
            }

            job.OnNotify(this, new NotifyEventArgs(ProgressEventType.Information, "Coalesce on table '" + table + "' completed (" + affectedRows + " rows affected)"));
        }
        public ViewTableInfoExtractUICollection(ITableInfo t, ViewType viewType, IFilter filter = null)
            : this()
        {
            DatabaseObjects.Add(t);

            if (filter != null)
            {
                DatabaseObjects.Add(filter);
            }
            ViewType = viewType;
        }
        public static IResolvedTableInfo ResolveTableInfo(ITableInfo tableInfo, IMappingResolver resolver, UniqueIdentifierGenerator generator, IMappingResolutionStage stage, IMappingResolutionContext context)
        {
            ArgumentUtility.CheckNotNull("tableInfo", tableInfo);
            ArgumentUtility.CheckNotNull("resolver", resolver);
            ArgumentUtility.CheckNotNull("stage", stage);
            ArgumentUtility.CheckNotNull("context", context);

            var visitor = new ResolvingTableInfoVisitor(resolver, generator, stage, context);

            return((IResolvedTableInfo)tableInfo.Accept(visitor));
        }
Пример #27
0
        public void Column_Names()
        {
            ITableInfo personInfo   = tableBuilder.GetConfig <Person>();
            ITableInfo employeeInfo = tableBuilder.GetConfig <Employee>();
            ITableInfo deptInfo     = tableBuilder.GetConfig <Department>();

            Assert.Equal(new string[] { "Id2", "Guid", "Name2", "SurName", "Street2", "AddressCity" },
                         personInfo.ColumnNames);
            Assert.Equal(new string[] { "Id2", "Salary2", "DepartmentId2", "Image2" }, employeeInfo.ColumnNames);
            Assert.Equal(new string[] { "Id3", "Guid", "Name3", "BossId3" }, deptInfo.ColumnNames);
        }
        public void Nested_Recursive_Ignore()
        {
            tableBuilder.Add <Recursive.Person>()
            .Ignore(x => x.Employee.Address1.Employee)
            .Ignore(x => x.Employee.Address2.Employee);

            ITableInfo propertyInfo = tableBuilder.GetConfig <Recursive.Person>();

            Assert.Equal(new string[] { "Id", "Name", "Employee.Address1.Street", "Employee.Address2.Street",
                                        "Employee.Salary" }, propertyInfo.Columns);
        }
Пример #29
0
        public static ContractCommentInfo Create(ITableInfo tableInfo)
        {
            var sb = new PaddedStringBuilder();

            Write(sb, tableInfo);

            return(new ContractCommentInfo
            {
                Comment = sb.ToString()
            });
        }
 public ExecuteCommandSyncTableInfo(IBasicActivateItems activator,
                                    [DemandsInitialization("The RDMP metadata object to synchronize with the underlying database state")]
                                    ITableInfo table,
                                    [DemandsInitialization("True to also synchronize any ANOTables (anonymisation tables) associated with the TableInfo")]
                                    bool alsoSyncAno,
                                    [DemandsInitialization("True to accept all changes without prompting")]
                                    bool autoYes) : base(activator)
 {
     this._tableInfo   = table;
     this._alsoSyncAno = alsoSyncAno;
     this._autoYes     = autoYes;
 }
Пример #31
0
        /// <summary>
        /// Creates a mock implementation of <see cref="ILoadMetadata"/> which loads the supplied <paramref name="tableInfo"/>
        /// </summary>
        /// <param name="tableInfo"></param>
        /// <returns></returns>
        public static ILoadMetadata Mock_LoadMetadataLoadingTable(ITableInfo tableInfo)
        {
            var lmd  = new Mock <ILoadMetadata>();
            var cata = new Mock <ICatalogue>();

            lmd.Setup(m => m.GetDistinctLiveDatabaseServer()).Returns(tableInfo.Discover(DataAccessContext.DataLoad).Database.Server);
            lmd.Setup(m => m.GetAllCatalogues()).Returns(new[] { cata.Object });

            cata.Setup(m => m.GetTableInfoList(It.IsAny <bool>())).Returns(new[] { tableInfo });

            return(lmd.Object);
        }
Пример #32
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="n"></param>
        /// <param name="t"></param>
        public TableDTOTemplete(string n, ITableInfo t)
        {
            if (string.IsNullOrEmpty(n))
                throw new Exception("参数n,命名空间不能为空。");

            if (t == null)
                throw new Exception("参数t,不能为null。");

            this.NameSpace = n;
            this.DBTable = t;
            //this.DBTable.Refresh();
        }
        public void Disable_Attributes()
        {
            tableBuilder.Add <Attr.Person>();

            tableBuilder.DisableAttributes();

            ITableInfo personInfo = tableBuilder.GetConfig <Attr.Person>();

            Assert.Equal("Person", personInfo.TableName);
            Assert.Equal(new string[] { "Id" }, personInfo.PrimaryKeys);
            Assert.Equal(new string[] { "Id", "Guid" }, personInfo.ColumnNames);
        }
Пример #34
0
        protected ICatalogue Import(DiscoveredTable tbl, out ITableInfo tableInfoCreated, out ColumnInfo[] columnInfosCreated, out CatalogueItem[] catalogueItems, out ExtractionInformation[] extractionInformations)
        {
            var importer = new TableInfoImporter(CatalogueRepository, tbl);

            importer.DoImport(out tableInfoCreated, out columnInfosCreated);

            var forwardEngineer = new ForwardEngineerCatalogue(tableInfoCreated, columnInfosCreated, true);

            forwardEngineer.ExecuteForwardEngineering(out var catalogue, out catalogueItems, out extractionInformations);

            return(catalogue);
        }
Пример #35
0
 public static ParameterValidationResult ArePrimaryKeysValid(ITableInfo tableInfo, List <string> constantColumns, List <string> scrambledColumns)
 {
     try
     {
         CheckParams(tableInfo, constantColumns, scrambledColumns, Resources.Check_Primary_keys);
         return(new ParameterValidationResult(true, tableInfo.FullTableName, ""));
     }
     catch (Exception ex)
     {
         return(new ParameterValidationResult(false, tableInfo.FullTableName, ex.Message));
     }
 }
Пример #36
0
        static IReadOnlyList <IColumnInfo> GetColumnsWillBeUpdate(ITableInfo tableInfo)
        {
            var excludedColumnNames = tableInfo.PrimaryKeyColumns.Select(x => x.ColumnName).ToList();

            excludedColumnNames.Add(Names2.INSERT_DATE);
            excludedColumnNames.Add(Names2.INSERT_TOKEN_ID);
            excludedColumnNames.Add(Names2.INSERT_USER_ID);
            excludedColumnNames.Add(Names2.ROW_GUID);
            excludedColumnNames.Add(Names2.INSERT_USER_ID);

            return(tableInfo.Columns.Where(c => !excludedColumnNames.Contains(c.ColumnName)).ToList());
        }
        public void Add_Type_Delegate()
        {
            tableBuilder.Add(typeof(Person), config => config
                             .PrimaryKey("Guid"))
            .Add(typeof(Department), config => config
                 .PrimaryKey("Guid"));

            ITableInfo personInfo = tableBuilder.GetConfig <Person>();
            ITableInfo deptInfo   = tableBuilder.GetConfig <Department>();

            Assert.Equal(new string[] { "Guid" }, personInfo.PrimaryKeys);
            Assert.Equal(new string[] { "Guid" }, deptInfo.PrimaryKeys);
        }
Пример #38
0
 public override void setup( string connectionString, ITableInfo tableInfo )
 {
     // If we're using file backing, then the connection string will start with "file=".
     if( connectionString.StartsWith( "path=" ) )
     {
     _filepath = connectionString.Substring( "file=".Length );
     if( !Directory.Exists( _filepath ) )
         Directory.CreateDirectory( _filepath );
     loadAll();
     }
     else
     throw new ArgumentException( "Connection string does not start with 'path='" );
 }
Пример #39
0
        /// <summary>
        /// Deletes any rows in tiCurrent that are out-of-date (with respect to live) and childless, then updates remaining out-of-date rows with the values from staging.
        /// Out-of-date remaining rows will only be present if they have children which are to be inserted. Any other children will have been deleted in an earlier pass through the recursion (since it starts at the leaves and works upwards).
        /// </summary>
        /// <param name="tiCurrent"></param>
        /// <param name="joinPathToTimeTable">Chain of JoinInfos back to the TimePeriodicity table so we can join to it and recover the effective date of a particular row</param>
        /// <param name="childJoins"></param>
        private void ProcessTable(ITableInfo tiCurrent, List <JoinInfo> joinPathToTimeTable, List <JoinInfo> childJoins)
        {
            var columnSetsToMigrate = _migrationConfiguration.CreateMigrationColumnSetFromTableInfos(new[] { tiCurrent }.ToList(), null, new BackfillMigrationFieldProcessor());
            var columnSet           = columnSetsToMigrate.Single();
            var queryHelper         = new ReverseMigrationQueryHelper(columnSet);
            var mcsQueryHelper      = new MigrationColumnSetQueryHelper(columnSet);

            // Any DELETEs needed?
            DeleteEntriesHavingNoChildren(tiCurrent, joinPathToTimeTable, childJoins, mcsQueryHelper);

            // Update any out-of-date rows that have survived the delete, so they don't overwrite live with stale data. They will only survive the delete if they have children due for insertion into live.
            UpdateOldParentsThatHaveNewChildren(tiCurrent, joinPathToTimeTable, queryHelper, mcsQueryHelper);
        }
Пример #40
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="n"></param>
        /// <param name="t"></param>
        public TableDocTemplete(ITableInfo t)
        {
            if (t == null)
                throw new Exception("参数t,不能为null。");

            this.DBTable = t;

            this.TableName = this.DBTable.RawName;



            //this.DBTable.Refresh();
        }
Пример #41
0
        private void Add(PreLoadDiscardedColumn discardedColumn, ITableInfo tableInfo, string rawDbName)
        {
            var snip    = new SubstringAutocompleteItem(discardedColumn.GetRuntimeName());
            var colName = discardedColumn.GetRuntimeName();

            snip.MenuText = colName;

            snip.Text       = tableInfo.GetQuerySyntaxHelper().EnsureFullyQualified(rawDbName, null, tableInfo.GetRuntimeName(), colName);
            snip.Tag        = discardedColumn;
            snip.ImageIndex = GetIndexFor(discardedColumn, RDMPConcept.ColumnInfo.ToString());

            AddUnlessDuplicate(snip);
        }
Пример #42
0
        public Module(ITableInfo tbInfo)
        {
            this.CodeName = tbInfo.PascalName;

            var fields = new List<ModuleField>();
            foreach (var col in tbInfo.Columns)
            {
                ModuleField field = new ModuleField(this, col.Description, col.RawName, col.PascalName);
                field.LanguageType = col.LanguageType;
                field.Nullable = col.Nullable;
                if(col.MaxLength.HasValue && col.MaxLength > 0)
                {
                    field.StringLength = col.MaxLength.Value;
                }
                fields.Add(field);
            }
            this.Fields = fields;
        }
Пример #43
0
        //private readonly string Temp_Table_Model = Comm.GetTemplete("Table.Model.cshtml");
        //private readonly string Temp_Table_Insert = Comm.GetTemplete("Table.Insert.cshtml");
        //private readonly string Temp_Table_Update = Comm.GetTemplete("Table.Update.cshtml");
        //private readonly string Temp_Table_Delete = Comm.GetTemplete("Table.Delete.cshtml");
        //private readonly string Temp_Table_Save = Comm.GetTemplete("Table.Save.cshtml");
        //private readonly string Temp_Table_Exist = Comm.GetTemplete("Table.Exist.cshtml");
        //private readonly string Temp_Table_Get = Comm.GetTemplete("Table.Get.cshtml");
        //private readonly string Temp_Table_GetAll = Comm.GetTemplete("Table.GetAll.cshtml");
        //private readonly string Temp_Table_Top = Comm.GetTemplete("Table.Top.cshtml");
        //private readonly string Temp_Table_Paged = Comm.GetTemplete("Table.Paged.cshtml");
        //private readonly string Temp_Table_GetBytes = Comm.GetTemplete("_GetBytes.cshtml");
        //private readonly string Temp_Table_GetMany = Comm.GetTemplete("Table._GetMany.cshtml");

        public string GenDataAccessCode(string nameSpace, ITableInfo tbInfo)
        {
            StringBuilder sb = new StringBuilder();
            sb.AppendLine("using System;");
            sb.AppendLine("using System.Collections.Generic;");
            sb.AppendLine("using System.Data;");
            sb.AppendLine("using System.Data.SqlClient;");
            sb.AppendLine("using System.Linq;");
            sb.AppendLine("using System.Text;");
            sb.AppendFormat("using {0};{1}", nameSpace, Environment.NewLine);
            sb.AppendFormat("using {0}.Model;{1}", nameSpace, Environment.NewLine);
            sb.AppendLine();
            sb.AppendFormat("namespace {0}.DAL{1}", nameSpace, Environment.NewLine);
            sb.AppendLine("{");
            sb.AppendFormat("    public class {0}Access{1}", tbInfo.PascalName, Environment.NewLine);
            sb.AppendLine("    {");

            Gen(sb, Comm.GetTemplete("Table.Insert.cshtml"), tbInfo);
            Gen(sb, Comm.GetTemplete("Table.Update.cshtml"), tbInfo);
            Gen(sb, Comm.GetTemplete("Table.Delete.cshtml"), tbInfo);
            //Gen(sb, Comm.GetTemplete("Table.Save.cshtml"), tbInfo);
            //Gen(sb, Comm.GetTemplete("Table.Exist.cshtml"), tbInfo);
            Gen(sb, Comm.GetTemplete("Table.Get.cshtml"), tbInfo);
            //Gen(sb, Comm.GetTemplete("Table.Top.cshtml"), tbInfo);
            Gen(sb, Comm.GetTemplete("Table.GetAll.cshtml"), tbInfo);
            Gen(sb, Comm.GetTemplete("Table.Paged.cshtml"), tbInfo);

            if ((from col in tbInfo.Columns
                 where col.DbTargetType == "SqlDbType.Image" || col.DbTargetType == "SqlDbType.Binary"
                 || col.DbTargetType == "SqlDbType.VarBinary" || col.DbTargetType == "SqlDbType.Timestamp"
                 select col).Count() > 0)
            {
                Gen(sb, Comm.GetTemplete("_GetBytes.cshtml"), tbInfo);
            }

            Gen(sb, Comm.GetTemplete("Table._GetMany.cshtml"), tbInfo);

            sb.AppendLine("    }");
            sb.AppendLine("}");

            return sb.ToString();
        }
Пример #44
0
        /// <summary>
        /// 未使用
        /// </summary>
        /// <param name="table"></param>
        /// <returns></returns>
        public static string GetUpdateByPKSql(ITableInfo table)
        {
            StringBuilder sbSql = new StringBuilder();

            sbSql.Append("\r\nUPDATE [");
            sbSql.Append(table.Schema);
            sbSql.Append("].[");
            sbSql.Append(table.Name);
            sbSql.Append("]\r\n");
            sbSql.Append(' ', 3);
            sbSql.Append("SET ");

            int len = table.Columns.Count;
            for (int i = 0; i < len; i++)
            {
                IColumnInfo col = table.Columns[i];
                if (col.Identity || col.Computed || col.IsPrimaryKey)
                    continue;

                sbSql.AppendFormat("[{0}] = @{1}", col.Name, SetPascalCase(col.Name));
                if (i != len - 1)
                {
                    sbSql.Append("\r\n");
                    sbSql.Append(' ', 6);
                    sbSql.Append(",");
                }
            }

            sbSql.Append("\r\n");
            sbSql.Append(" WHERE ");

            List<IColumnInfo> pks = GetPKs(table);
            len = pks.Count;
            for (int i = 0; i < len; i++)
            {
                IColumnInfo col = pks[i];

                sbSql.AppendFormat("[{0}] = @{1}", col.Name, SetPascalCase(col.Name));
                if (i != len - 1)
                {
                    sbSql.Append(" AND ");
                }
            }
            sbSql.Append("\r\n");

            return sbSql.ToString();
        }
Пример #45
0
        public string GetByIdString(ITableInfo tinfo, string p1, string p2)
        {
            StringBuilder sb = new StringBuilder();

            foreach (var col in tinfo.Columns)
            {
                if (!col.IsPrimaryKey)
                {
                    continue;
                }
                if (sb.Length > 0)
                {
                    sb.Append(" && ");
                }
                sb.AppendFormat("{0}.{2} == {1}.{2}", p1, p2, col.PascalName);
            }

            return sb.ToString();
        }
Пример #46
0
 public string GetUpdateFilterString(ITableInfo tinfo, string modelName)
 {
     StringBuilder sb = new StringBuilder();
     for (int i = 0; i < tinfo.Keys.Count; i++)
     {
         if (i > 0)
         {
             sb.Append(" && ");
         }
         var item = tinfo.Keys[i];
         sb.AppendFormat("p.{0} == {1}.{0}", item.PascalName, modelName);
     }
     return sb.ToString();
 }
Пример #47
0
 public virtual void setup( string connectionString, ITableInfo tableInfo )
 {
     // Always succeeds. We're not connecting to anything. We also don't need tableInfo.
 }
Пример #48
0
 public StoreConventions(IJsonConverter jsonConverter, ITableInfo tableInfo)
 {
     _jsonConverter = jsonConverter;
     _tableInfo = tableInfo;
 }
Пример #49
0
 public StoreConventions(IJsonConverter jsonConverter)
 {
     _jsonConverter = jsonConverter;
     _tableInfo = new TableInfo();
 }
Пример #50
0
        public static string GetColumnString(ITableInfo table)
        {
            StringBuilder sbSql = new StringBuilder();

            //sbSql.Append("\r\nSELECT ");// [");

            int len = table.Columns.Count;
            for (int i = 0; i < len; i++)
            {
                IColumnInfo col = table.Columns[i];
                //if (col.InPrimaryKey)
                //    continue;

                sbSql.AppendFormat("[{0}]", col.RawName);
                if (i != len - 1)
                {
                    //sbSql.Append("\r\n");
                    //sbSql.Append(' ', 6);
                    sbSql.Append(", ");
                }
            }
            //sbSql.Append("\r\n");
            //sbSql.Append(' ', 2);
            //sbSql.Append("FROM [");
            //sbSql.Append(table.Schema);
            //sbSql.Append("].[");
            //sbSql.Append(table.RawName);
            //sbSql.Append("]\r\n");

            return sbSql.ToString();
        }
 public static SqlTable CreateSqlTable (ITableInfo tableInfo)
 {
   var sqlTable = new SqlTable (tableInfo, JoinSemantics.Inner);
   return sqlTable;
 }
Пример #52
0
        /// <summary>
        /// if(item.Key == "Feature" || item.Key == "Feature2") continue;
        /// 计算列,自增列,主键列
        /// </summary>
        /// <returns></returns>
        public static string BuildGetKeyEqContinue(ITableInfo table)
        {
            string result = "";
            int len = table.Columns.Count;
            for (int i = 0; i < len; i++)
            {
                IColumnInfo col = table.Columns[i];
                if (col.IsPrimaryKey || col.Computed || col.Identity)
                {
                    if (result != "")
                    {
                        result += " || ";
                    }
                    result += "item.Key == \"" + col.RawName + "\"";
                }
            }

            if (result != "")
            {
                result = string.Format("if({0}) continue;", result);
            }
            return result;
        }
Пример #53
0
        //public static string GetPKName(Table table)
        //{
        //    List<Column> result = new List<Column>();
        //    int len = table.Columns.Count;
        //    for (int i = 0; i < len; i++)
        //    {
        //        Column col = table.Columns[i];
        //        if (col.InPrimaryKey)
        //            return col.Name;
        //    }
        //    return "";
        //}

        public static string GetDefaultOrderby(ITableInfo table)
        {
            StringBuilder sbSql = new StringBuilder();

            List<IColumnInfo> pks = GetPKs(table);
            int len = pks.Count;
            for (int i = 0; i < len; i++)
            {
                IColumnInfo col = pks[i];

                sbSql.AppendFormat("{0} asc", col.RawName);
                if (i != len - 1)
                {
                    sbSql.Append(", ");
                }
            }

            return sbSql.ToString();
        }
Пример #54
0
        public static string GetExistByPKSql(ITableInfo table)
        {
            StringBuilder sbSql = new StringBuilder();

            sbSql.Append("\r\nSELECT COUNT(*) FROM [");
            sbSql.Append(table.Schema);
            sbSql.Append("].[");
            sbSql.Append(table.RawName);
            sbSql.Append("]\r\n");
            sbSql.Append(' ', 6);
            sbSql.Append("WHERE ");

            List<IColumnInfo> pks = GetPKs(table);
            int len = pks.Count;
            for (int i = 0; i < len; i++)
            {
                IColumnInfo col = pks[i];

                sbSql.AppendFormat("[{0}] = @{1}", col.RawName, col.Name);
                if (i != len - 1)
                {
                    sbSql.Append(" AND ");
                }
            }
            sbSql.Append("\r\n");

            return sbSql.ToString();
        }
Пример #55
0
        public static string GetPKValueString(ITableInfo table)
        {
            StringBuilder sbSql = new StringBuilder();

            List<IColumnInfo> pks = GetPKs(table);
            int len = pks.Count;
            for (int i = 0; i < len; i++)
            {
                IColumnInfo col = pks[i];

                sbSql.AppendFormat("this.{0}", col.PascalName);
                if (i != len - 1)
                {
                    sbSql.Append(", ");
                }
            }

            return sbSql.ToString();
        }
Пример #56
0
        public static string BuildGetByPKSql(ITableInfo table)
        {
            StringBuilder sbSql = new StringBuilder();

            sbSql.Append("\r\nSELECT ");// [");

            int len = table.Columns.Count;
            for (int i = 0; i < len; i++)
            {
                IColumnInfo col = table.Columns[i];
                //if (col.InPrimaryKey)
                //    continue;

                sbSql.AppendFormat("[{0}]", col.RawName);
                if (i != len - 1)
                {
                    sbSql.Append("\r\n");
                    sbSql.Append(' ', 6);
                    sbSql.Append(",");
                }
            }
            sbSql.Append("\r\n");
            sbSql.Append(' ', 2);
            sbSql.Append("FROM [");
            sbSql.Append(table.Schema);
            sbSql.Append("].[");
            sbSql.Append(table.RawName);
            sbSql.Append("]\r\n");
            sbSql.Append(" WHERE ");

            List<IColumnInfo> pks = GetPKs(table);
            len = pks.Count;
            for (int i = 0; i < len; i++)
            {
                IColumnInfo col = pks[i];

                sbSql.AppendFormat("[{0}] = @{1}", col.RawName, col.Name);
                if (i != len - 1)
                {
                    sbSql.Append(" AND ");
                }
            }
            sbSql.Append("\r\n");

            return sbSql.ToString();
        }
Пример #57
0
 public StoreConventions()
 {
     _jsonConverter = new JilJsonConverter();
     _tableInfo = new TableInfo();
 }
Пример #58
0
        public static string GetPKDefine(ITableInfo table)
        {
            StringBuilder sbSql = new StringBuilder();

            List<IColumnInfo> pks = GetPKs(table);
            int len = pks.Count;
            for (int i = 0; i < len; i++)
            {
                IColumnInfo col = pks[i];

                sbSql.AppendFormat("{0} {1}", col.LanguageType, col.CamelName);
                if (i != len - 1)
                {
                    sbSql.Append(", ");
                }
            }

            return sbSql.ToString();
        }
Пример #59
0
 public static List<IColumnInfo> GetPKs(ITableInfo table)
 {
     List<IColumnInfo> result = new List<IColumnInfo>();
     int len = table.Columns.Count;
     for (int i = 0; i < len; i++)
     {
         IColumnInfo col = table.Columns[i];
         if (col.IsPrimaryKey)
             result.Add(col);
     }
     return result;
 }
Пример #60
0
 public PageFormModel(ITableInfo tbInfo)
 {
     this.FormModule = new Module(tbInfo);
 }