/// <summary> /// 지정된 Entity의 속성 값을 이용하여 Procedure의 Parameter 값을 설정하고, 실행시키는 작업을 비동기적으로 수행합니다. /// 일반적으로 Save / Update시에 활용하면 좋다. /// 단, 비동기적인 작업이므로, Transaction 에 문제가 발생할 소지가 있습니다. /// </summary> /// <typeparam name="T">Persistent object 수형</typeparam> /// <param name="repository">IAdoRepository 인스턴스</param> /// <param name="spName">실행할 Procedure Name</param> /// <param name="entity">실행할 Entity</param> /// <param name="nameMapper">Name Mapping Class</param> /// <returns>Command 인자 중에 ParameterDirection이 ReturnValue인 인자의 값</returns> public static Task <object> ExecuteEntityTask <T>(this IAdoRepository repository, string spName, T entity, INameMapper nameMapper) { spName.ShouldNotBeWhiteSpace("spName"); entity.ShouldNotBeNull("entity"); nameMapper.ShouldNotBeNull("nameMapper"); return(Task.Factory.StartNew(() => repository.ExecuteEntity <T>(spName, entity, nameMapper))); }
/// <summary> /// 지정된 Procedure를 수행한다. 인자로 entity의 속성값을 이용한다. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="repository">IAdoRepository 인스턴스</param> /// <param name="spName">실행할 Procedure Name</param> /// <param name="entity">실행할 Entity</param> /// <param name="nameMapper">Name Mapping Class</param> /// <returns>Command 인자 중에 ParameterDirection이 ReturnValue인 인자의 값</returns> public static object ExecuteEntity <T>(this IAdoRepository repository, string spName, T entity, INameMapper nameMapper) { using (var cmd = repository.GetProcedureCommand(spName, true)) return(repository.ExecuteEntity(cmd, entity, nameMapper)); }
/// <summary> /// 지정된 Procedure를 수행한다. 인자로 entity의 속성값을 이용한다. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="repository">IAdoRepository 인스턴스</param> /// <param name="cmd">실행할 DbCommand</param> /// <param name="entity">실행할 Entity</param> /// <param name="nameMapper">Name Mapping Class</param> /// <returns>Command 인자 중에 ParameterDirection이 ReturnValue인 인자의 값</returns> public static object ExecuteEntity <T>(this IAdoRepository repository, DbCommand cmd, T entity, INameMapper nameMapper) { return(repository.ExecuteEntity(cmd, entity, cmd.NameMapping(nameMapper))); }