/// <summary> /// Gets a comma separated list of the field parameter names for INSERT operation, by using the /// specified fields. /// </summary> /// <typeparam name="TTableObject">The type of the object.</typeparam> /// <param name="fields">The <c>PropertyBag</c> object which contains the fields.</param> /// <returns>The comma separated list of the field parameter names for INSERT operation.</returns> /// <remarks>The auto-generated identity fields will be omitted.</remarks> protected virtual string GetInsertParameterNameList <TTableObject>(WhereClauseBuilder <TTableObject> whereClauseBuilder) where TTableObject : class, new() { return(string.Join(", ", typeof(TTableObject) .GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty | BindingFlags.SetProperty) .Where(p => !p.IsDefined(typeof(KeyAttribute)) || !p.GetCustomAttribute <KeyAttribute>().AutoGenerated) .Select(p => $"{whereClauseBuilder.ParameterChar}{p.Name.ToLower()}"))); }
/// <summary> /// /// </summary> /// <typeparam name="TTableObject"></typeparam> /// <param name="obj"></param> /// <param name="whereClauseBuilder"></param> /// <returns></returns> protected virtual IEnumerable <DbParameter> GetInsertDbParameterList <TTableObject>(TTableObject obj, WhereClauseBuilder <TTableObject> whereClauseBuilder) where TTableObject : class, new() { var parameters = new List <DbParameter>(); typeof(TTableObject) .GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty | BindingFlags.SetProperty) .Where(p => !p.IsDefined(typeof(KeyAttribute)) || !p.GetCustomAttribute <KeyAttribute>().AutoGenerated) .ToList() .ForEach(p => { var parameter = this.CreateParameter(); parameter.ParameterName = $"{whereClauseBuilder.ParameterChar}{p.Name.ToLower()}"; parameter.Value = p.GetValue(obj); parameters.Add(parameter); }); return(parameters); }
protected virtual string GetUpdateCriteriaParameterNameList <TTableObject>(WhereClauseBuilder <TTableObject> whereClauseBuilder, UpdateCriteria <TTableObject> updateCriteria) where TTableObject : class, new() { return(string.Join(", ", updateCriteria.Select(uc => $"{uc.Key}={whereClauseBuilder.ParameterChar}u_{uc.Key}"))); }