private void AddEntityInsertStatement(IChild child, EntityInfo childInfo, DateTime timeStamp) { var builder = new ComplexCommandBuilder(); var statement = new InsertStatement(childInfo.Name); foreach (var element in childInfo.Elements) { var value = element.Name == "TimeStamp" ? timeStamp : element.GetValue(child); var parameter = value.ToParameter(); statement.Add(element.Name, parameter.Name); builder.AddParameter(parameter); } foreach (var dataType in childInfo.DataTypes) { foreach (var element in dataType.Elements) { var value = dataType.GetValue(element, child); var parameter = value.ToParameter(); statement.Add(element.Name, parameter.Name); builder.AddParameter(parameter); } } builder.AddStatement(statement); Add(builder); AddSaveStatements(child, childInfo, timeStamp); child.Save(timeStamp); }
private void AddChildStatements(IComplexCommandBuilder parentBuilder, EntityInfo entityInfo, IFilter filter) { foreach (var childInfo in entityInfo.Children) { var childBuilder = new ComplexCommandBuilder(childInfo.Name, childInfo.Type); childBuilder.AddStatement(new SelectStatement(childInfo, filter)); foreach (var parameter in filter.Parameters) { childBuilder.AddParameter(parameter); //logger.Debug(" parameter name=" + parameter.Name + "value=" + parameter.Value.ToString()); } parentBuilder.AddChild(childBuilder); AddChildStatements(childBuilder, childInfo, filter); } foreach (var valueInfo in entityInfo.Values) { var valueBuilder = new ComplexCommandBuilder(valueInfo.Name, valueInfo.Type); valueBuilder.AddStatement(new SelectStatement(valueInfo, filter)); foreach (var parameter in filter.Parameters) { valueBuilder.AddParameter(parameter); //logger.Debug(" parameter name=" + parameter.Name + "value=" + parameter.Value.ToString()); } parentBuilder.AddChild(valueBuilder); } }
public ReverseQuery(IFactory factory, IFilter filter, Expression <Func <TParent, object> > property) { var parent = new EntityInfo(typeof(TParent)); var valueType = typeof(TValue); var valueInfo = new ValueInfo(parent, property.ToPropertyInfo(), valueType); //this.logger = logger; this.factory = factory; this.valueBuilder = new ComplexCommandBuilder(valueInfo.Name, valueInfo.Type); rootName = "T_" + Guid.NewGuid().ToString().Replace("-", string.Empty); var selectStatement = new SelectStatement(valueInfo, filter, parent, rootIdAlias); var createTableStatement = new CreateTableStatement(rootName, selectStatement); valueBuilder.AddStatement(createTableStatement); foreach (var parameter in filter.Parameters) { valueBuilder.AddParameter(parameter); } builder = new ComplexCommandBuilder(parent.Name, parent.Type); builder.AddStatement(new SelectStatement(parent, rootName, rootIdAlias)); AddChildStatements(builder, parent); }
private void AddDeleteStatements(IEntity entity, EntityInfo entityInfo) { foreach (var valueInfo in entityInfo.Values) { foreach (var value in entity.GetValues(valueInfo)) { var builder = new ComplexCommandBuilder(); var idParameter = value.Id.ToParameter(); builder.AddParameter(idParameter); var whereClause = string.Format("{0}.{1} = {2}", valueInfo.Name, valueInfo.Identifer.Name, idParameter.Name); var statement = new DeleteStatement(valueInfo.Name, whereClause); builder.AddStatement(statement); Add(builder); } } foreach (var childInfo in entityInfo.Children) { foreach (var child in entity.GetChildren(childInfo)) { var builder = new ComplexCommandBuilder(); var idParameter = child.Id.ToParameter(); builder.AddParameter(idParameter); var whereClause = string.Format("{0}.{1} = {2}", childInfo.Name, childInfo.Identifier.Name, idParameter.Name); var statement = new DeleteStatement(childInfo.Name, whereClause); builder.AddStatement(statement); AddDeleteStatements(child, childInfo); Add(builder); } } }
private void AddEntityInsertStatement(IEntity entity, EntityInfo entityInfo, DateTime timeStamp) { var builder = new ComplexCommandBuilder(); var statement = new InsertStatement(entityInfo.Name); foreach (var element in entityInfo.Elements) { var value = element.IsTimeStamp ? timeStamp : element.GetValue(entity); var parameter = value.ToParameter(); statement.Add(element.Name, parameter.Name); builder.AddParameter(parameter); } foreach (var dataType in entityInfo.DataTypes) { foreach (var element in dataType.Elements) { var value = dataType.GetValue(element, entity); var parameter = value.ToParameter(); statement.Add(element.Name, parameter.Name); builder.AddParameter(parameter); } } builder.AddStatement(statement); Add(builder); AddSaveStatements(entity, entityInfo, timeStamp); entity.Save(timeStamp); }
private void AddRootCommandBuilder(EntityInfo entityInfo) { var builder = new ComplexCommandBuilder(); builder.AddStatement(new CreateTableStatement(entityInfo)); Add(builder); }
private void AddSearchIndices(IEnumerable <ISearch> searches) { foreach (var search in searches) { var builder = new ComplexCommandBuilder(); //var tableName = new EntityInfo(search.BaseType).Name; //var indexName = string.Format("{0}_{1}", tableName, search.Name); //builder.AddStatement(new CreateIndexStatement(search.SourceName, search.Name, false, search.Columns)); builder.AddStatement(new CreateIndexStatement(search)); Add(builder); } }
private void AddLookupIndices(IEnumerable <ILookup> lookups) { foreach (var lookup in lookups) { var builder = new ComplexCommandBuilder(); //var tableName = new EntityInfo(lookup.BaseType).Name; //var indexName = string.Format("{0}_{1}", tableName, lookup.Name); //builder.AddStatement(new CreateIndexStatement(tableName, indexName, true, lookup.Columns)); builder.AddStatement(new CreateIndexStatement(lookup)); Add(builder); } }
protected void AddValueDeleteStatement(IValue value, ValueInfo valueInfo) { var builder = new ComplexCommandBuilder(); var idParameter = value.Id.ToParameter(); builder.AddParameter(idParameter); var whereClause = string.Format("{0}.{1} = {2}", valueInfo.Name, valueInfo.Identifer.Name, idParameter.Name); var statement = new DeleteStatement(valueInfo.Name, whereClause); builder.AddStatement(statement); Add(builder); }
protected void AddEntityDeleteStatement(IChild child, EntityInfo childInfo) { var builder = new ComplexCommandBuilder(); var idParameter = child.Id.ToParameter(); builder.AddParameter(idParameter); var whereClause = string.Format("{0}.{1} = {2}", childInfo.Name, childInfo.Identifier.Name, idParameter.Name); var statement = new DeleteStatement(childInfo.Name, whereClause); builder.AddStatement(statement); Add(builder); AddDeleteStatements(child, childInfo); }
private void AddValueInsertStatement(IValue value, ValueInfo valueInfo) { var builder = new ComplexCommandBuilder(); var statement = new InsertStatement(valueInfo.Name); foreach (var element in valueInfo.Elements) { var result = element.GetValue(value); var parameter = result.ToParameter(); statement.Add(element.Name, parameter.Name); builder.AddParameter(parameter); } builder.AddStatement(statement); Add(builder); value.Save(); }
private void AddChildStatements(IComplexCommandBuilder parentBuilder, EntityInfo entityInfo) { foreach (var childInfo in entityInfo.Children) { var childBuilder = new ComplexCommandBuilder(childInfo.Name, childInfo.Type); childBuilder.AddStatement(new SelectStatement(childInfo, rootName, rootIdAlias)); parentBuilder.AddChild(childBuilder); AddChildStatements(childBuilder, childInfo); } foreach (var valueInfo in entityInfo.Values) { var valueBuilder = new ComplexCommandBuilder(valueInfo.Name, valueInfo.Type); valueBuilder.AddStatement(new SelectStatement(valueInfo, rootName, rootIdAlias)); parentBuilder.AddChild(valueBuilder); } }
private void AddCommandBuilders(EntityInfo entityInfo) { foreach (var valueInfo in entityInfo.Values) { var builder = new ComplexCommandBuilder(); builder.AddStatement(new CreateTableStatement(valueInfo)); Add(builder); } foreach (var childInfo in entityInfo.Children) { var builder = new ComplexCommandBuilder(); builder.AddStatement(new CreateTableStatement(childInfo)); Add(builder); AddCommandBuilders(childInfo); } }
private void AddEntityUpdateStatement(IChild child, EntityInfo childInfo, DateTime timeStamp) { var builder = new ComplexCommandBuilder(); var idParameter = child.Id.ToParameter(); builder.AddParameter(idParameter); var whereClause = string.Format("{0}.{1} = {2}", childInfo.Name, childInfo.Identifier.Name, idParameter.Name); var statement = new UpdateStatement(childInfo.Name, whereClause); var timeStampParameter = timeStamp.ToParameter(); statement.Set(childInfo.TimeStamp.Name, timeStampParameter.Name); builder.AddParameter(timeStampParameter); foreach (var element in childInfo.Elements.Where(x => !x.IsReadOnly)) { var value = element.GetValue(child); var parameter = value.ToParameter(); statement.Set(element.Name, parameter.Name); builder.AddParameter(parameter); } foreach (var dataType in childInfo.DataTypes) { foreach (var element in dataType.Elements) { var value = dataType.GetValue(element, child); var parameter = value.ToParameter(); statement.Set(element.Name, parameter.Name); builder.AddParameter(parameter); } } builder.AddStatement(statement); Add(builder); AddSaveStatements(child, childInfo, timeStamp); child.Save(timeStamp); }
private void AddValueMoveStatement(IValue value, ValueInfo valueInfo) { var builder = new ComplexCommandBuilder(); var idParameter = value.Id.ToParameter(); builder.AddParameter(idParameter); var whereClause = string.Format("{0}.{1} = {2}", valueInfo.Name, valueInfo.Identifer.Name, idParameter.Name); var statement = new UpdateStatement(valueInfo.Name, whereClause); var seq = valueInfo.Sequence.GetValue(value); var sequenceParameter = seq.ToParameter(); statement.Set(valueInfo.Sequence.Name, sequenceParameter.Name); builder.AddParameter(sequenceParameter); builder.AddStatement(statement); Add(builder); value.Save(); }