Пример #1
0
 /// <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()}")));
 }
Пример #2
0
 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}")));
 }
Пример #3
0
        /// <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);
        }