/// <summary> /// 创建语句生成上下文。 /// </summary> /// <param name="operate">操作对象。</param> /// <param name="generator">值生成对象。</param> public GenerateContext(DbOperateBase operate, SqlGeneratorBase generator) { var operateContext = operate.Executor; var dataContext = operateContext.Context; Generator = generator; _FragmentWriter = generator.FragmentWriter; var configure = dataContext.Configuration; Metadata = configure.Metadata; _Translator = configure.Translator; Feature = dataContext.Database.Feature; Data = generator.CreateData(this, operate); }
/// <summary> /// 创建语句生成上下文。 /// </summary> /// <param name="operate">操作对象。</param> /// <param name="generator">值生成对象。</param> public GenerateContext(DbOperateBase operate, SqlGeneratorBase generator) { var operateContext = operate.Executor; var dataContext = operateContext.Context; Generator = generator; _FragmentWriter = generator.FragmentWriter; var configure = dataContext.Configuration; Metadata = configure.Metadata; _Translator = configure.Translator; Feature = dataContext.Database.Feature; switch (operate.Type) { case EOperateType.InsertObjects: case EOperateType.InsertPropertys: Data = new GenerateDataForInsert(this, operate as DbObjectsOperateBase); break; case EOperateType.UpdateObjects: case EOperateType.UpdatePropertys: Data = new GenerateDataForUpdate(this, operate as DbObjectsOperateBase); break; case EOperateType.DeleteObjects: Data = new GenerateDataForDelete(this, operate as DbObjectsOperateBase); break; case EOperateType.AddRelation: case EOperateType.RemoveRelation: Data = new GenerateDataForRelation(this, operate as DbRelationOperateBase); break; case EOperateType.InsertStatement: case EOperateType.UpdateStatement: case EOperateType.DeleteStatement: Data = new GenerateDataForStatement(this, operate as DbStatementOperateBase); break; default: Data = new GenerateData(this, operate); break; } }