/// <summary> /// 지정된 Entity의 속성 값을 이용하여 Command의 Parameter 값을 설정하고, 실행시킨다. /// 일반적으로 Save / Update시에 활용하면 좋다. /// </summary> /// <typeparam name="T">Persistent object 수형</typeparam> /// <param name="repository">IAdoRepository 인스턴스</param> /// <param name="cmd">수행할 Command 객체</param> /// <param name="entity">처리할 Persistent object</param> /// <param name="nameMaps">ParameterName of Procedure = Property Name of Persistent object 매핑 정보</param> /// <returns>Command 인자 중에 ParameterDirection이 ReturnValue인 인자의 값</returns> public static object ExecuteEntity <T>(this IAdoRepository repository, DbCommand cmd, T entity, INameMap nameMaps) { cmd.ShouldNotBeNull("cmd"); entity.ShouldNotBeNull("entity"); nameMaps.ShouldNotBeNull("nameMap"); if (IsDebugEnabled) { log.Debug("Entity를 처리를 수행합니다. CommandText=[{0}], entity=[{1}], nameMaps=[{2}]", cmd.CommandText, entity.ObjectToString(), nameMaps.DictionaryToString()); } AdoTool.SetParameterValues(repository.Db, cmd, entity, nameMaps); return(repository.ExecuteCommand(cmd)); }
/// <summary> /// Stored Procedure를 실행하고, Parameter의 Direction이 INPUT이 아닌 Parameter들을 반환한다. (InputOutput, Output, ReturnValue) /// </summary> /// <param name="repository">IAdoRepository 인스턴스</param> /// <param name="spName">실행할 Procedure 이름</param> /// <param name="parameters">인자</param> /// <returns>INPUT을 제외한 Oupput, InputOutput, ReturnValue에 해당하는 Parameter 값을 반환한다.</returns> public static IAdoParameter[] ExecuteProcedure(this IAdoRepository repository, string spName, params IAdoParameter[] parameters) { if (IsDebugEnabled) { log.Debug("Procedure를 수행합니다... spName=[{0}], parameters=[{1}]", spName, parameters.CollectionToString()); } using (var cmd = repository.GetProcedureCommand(spName)) { repository.ExecuteCommand(cmd, parameters); var result = AdoTool.GetOutputParameters(repository.Db, cmd); if (IsDebugEnabled) { log.Debug("Procedure 수행 후 결과 값입니다. spName=[{0}], output parameters=[{1}]", spName, result.CollectionToString()); } return(result); } }