当前位置: 首页>>代码示例>>C#>>正文


C# IShellContext.GetDatabaseStructure方法代码示例

本文整理汇总了C#中IShellContext.GetDatabaseStructure方法的典型用法代码示例。如果您正苦于以下问题:C# IShellContext.GetDatabaseStructure方法的具体用法?C# IShellContext.GetDatabaseStructure怎么用?C# IShellContext.GetDatabaseStructure使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在IShellContext的用法示例。


在下文中一共展示了IShellContext.GetDatabaseStructure方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: TableWriter

        public TableWriter(IShellContext context, IConnectionProvider connection, NameWithSchema name, TableInfo inputRowFormat, CopyTableTargetOptions options, TableInfo destinationTableOverride = null, LinkedDatabaseInfo linkedInfo = null, DataFormatSettings sourceDataFormat = null)
        {
            _connectionProvider = connection;
            _linkedInfo = linkedInfo;
            _name = name;
            _inputRowFormat = inputRowFormat;
            _queue = new CdlDataQueue(inputRowFormat);
            _context = context;

            _inserter = connection.Factory.CreateBulkInserter();
            _inserter.SourceDataFormat = sourceDataFormat;
            _connection = _connectionProvider.Connect();
            _inserter.Connection = _connection;
            _inserter.Factory = connection.Factory;
            _inserter.LinkedInfo = _linkedInfo;
            var db = context.GetDatabaseStructure(connection.ProviderString);
            _inserter.DestinationTable = destinationTableOverride ?? db.FindTableLike(_name.Schema, _name.Name);
            _inserter.CopyOptions = options;
            _inserter.Log += _inserter_Log;

            _thread = new Thread(Run);
            _thread.Start();
        }
开发者ID:dbshell,项目名称:dbshell,代码行数:23,代码来源:TableWriter.cs

示例2: CreateWriter

        public ICdlWriter CreateWriter(TableInfo inputRowFormat, CopyTableTargetOptions options, IShellContext context, DataFormatSettings sourceDataFormat)
        {
            var connection = GetConnectionProvider(context);
            using (var conn = connection.Connect())
            {
                var db = new DatabaseInfo();
                db.LinkedInfo = LinkedInfo;
                var tbl = inputRowFormat.CloneTable(db);
                tbl.FullName = GetFullName(context);
                foreach (var col in tbl.Columns) col.AutoIncrement = false;
                tbl.ForeignKeys.Clear();
                if (tbl.PrimaryKey != null) tbl.PrimaryKey.ConstraintName = null;
                tbl.AfterLoadLink();

                if (IdentityColumn != null)
                {
                    var col = new ColumnInfo(tbl);
                    col.Name = IdentityColumn;
                    col.DataType = "int";
                    col.AutoIncrement = true;
                    col.NotNull = true;
                    var pk = new PrimaryKeyInfo(tbl);
                    pk.Columns.Add(new ColumnReference {RefColumn = col});
                    pk.ConstraintName = "PK_" + tbl.Name;
                    tbl.PrimaryKey = pk;
                    tbl.Columns.Insert(0, col);
                }

                //var sw = new StringWriter();
                var so = new ConnectionSqlOutputStream(conn, null, connection.Factory.CreateDialect());
                var dmp = connection.Factory.CreateDumper(so, new SqlFormatProperties());
                if (DropIfExists) dmp.DropTable(tbl, true);

                bool useExistingTable = false;
                if (UseIfExists)
                {
                    var ts = context.GetDatabaseStructure(connection.ProviderString);
                    useExistingTable = ts.FindTableLike(tbl.FullName.Schema, tbl.FullName.Name) != null;
                }

                if (!useExistingTable)
                {
                    tbl.Columns.ForEach(x => x.EnsureDataType(connection.Factory.CreateSqlTypeProvider()));
                    dmp.CreateTable(tbl);
                }
                //using (var cmd = conn.CreateCommand())
                //{
                //    cmd.CommandText = sw.ToString();
                //    cmd.ExecuteNonQuery();
                //}

                return new TableWriter(context, connection, GetFullName(context), inputRowFormat, options, useExistingTable ? null : tbl, LinkedInfo, sourceDataFormat);
            }
        }
开发者ID:dbshell,项目名称:dbshell,代码行数:54,代码来源:CreateTable.cs

示例3: GetDatabaseStructure

 protected DatabaseInfo GetDatabaseStructure(IShellContext context)
 {
     return context.GetDatabaseStructure(GetProviderString(context));
 }
开发者ID:dbshell,项目名称:dbshell,代码行数:4,代码来源:ElementBase.cs

示例4: GetModel

 public object GetModel(IShellContext context)
 {
     return context.GetDatabaseStructure(GetProviderString(context));
 }
开发者ID:dbshell,项目名称:dbshell,代码行数:4,代码来源:DatabaseProvider.cs

示例5: DataSyncSqlModel

        public DataSyncSqlModel(SyncModel model, IShellContext context, bool allowExternalSources, string providerString)
        {
            _model = model;
            _allowExternalSources = allowExternalSources;

            foreach(var param in model.Parameters)
            {
                Parameters.Add(new ParameterModel
                {
                    DataType = context.Replace(param.DataType),
                    DefaultValue = context.Replace(param.DefaultValue),
                    Name = context.Replace(param.Name),
                });
            }

            ProviderString = providerString;
            TargetStructure = context.GetDatabaseStructure(providerString);

            if (_model.IsFlatSync)
            {
                foreach (var src in _model.Sources)
                {
                    var entity = new SourceEntitySqlModel(src, this);
                    entity.LoadFlatColumns();
                    FlatSources.Add(entity);
                    entity.SqlAlias = src.Alias ?? "src_" + FlatSources.Count;
                    entity.InitializeQuerySource(src.DataSource, context, src.SourceTableVariable, src.SourceQueryVariable);
                    entity.MaterializeIfNeeded();
                }
            }
            else
            {
                SourceGraphModel = new SourceGraphSqlModel(model, context, this);
                foreach(var col in SourceGraphModel.Columns.Values)
                {
                    col.CompileFilter();
                }
            }
            foreach (var entity in model.Targets)
            {
                Entities.Add(new TargetEntitySqlModel(this, entity, context));
            }
            foreach (var fk in model.TargetReferences)
            {
                var sourceReplaced = context.Replace(fk.Source);
                var sourceEntity = FindTarget(sourceReplaced);
                string targetReplaced = context.Replace(fk.Target);
                var targetEntity = FindTarget(targetReplaced);
                if (sourceEntity == null) throw new Exception($"DBSH-00000 Source entity {sourceReplaced} not found");
                if (targetEntity == null) throw new Exception($"DBSH-00219 Target entity {targetReplaced} not found");

                sourceEntity.AddReference(fk, targetEntity);
            }

            PartialSortEntitiesByRefs();

            foreach (var entity in Entities)
            {
                entity.CreateJoinModel();
            }

            foreach (var entity in Entities)
            {
                entity.TestCorrectness();
            }
        }
开发者ID:dbshell,项目名称:dbshell,代码行数:66,代码来源:DataSyncSqlModel.cs


注:本文中的IShellContext.GetDatabaseStructure方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。