本文整理汇总了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();
}
示例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);
}
}
示例3: GetDatabaseStructure
protected DatabaseInfo GetDatabaseStructure(IShellContext context)
{
return context.GetDatabaseStructure(GetProviderString(context));
}
示例4: GetModel
public object GetModel(IShellContext context)
{
return context.GetDatabaseStructure(GetProviderString(context));
}
示例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();
}
}