public static IDictionary QueryManyAsDictionary <TEntity, TDictionary>(this FluentData.IDbCommand source) where TDictionary : IDictionary { if (!ReflectionHelper.IsCustomEntity <TEntity>()) { throw new FluentDataException("generics type error.it must be a model of the Entity."); } var dic = ReflectionHelper.GetProperties(typeof(TEntity)) .Where(c => c.Value.CustomAttributes.FirstOrDefault(d => d.AttributeType.Name == "KeyofDictionary") != null || c.Value.CustomAttributes.FirstOrDefault(d => d.AttributeType.Name == "ValueofDictionary") != null ) .ToDictionary(c => c.Value.CustomAttributes.First(d => d.AttributeType.Name == "KeyofDictionary" || d.AttributeType.Name == "ValueofDictionary").AttributeType.Name, d => d.Value.Name); if (!dic.ContainsKey("KeyofDictionary")) { throw new FluentDataException("model of the Entity must give a tag which indicating the key of dictionary."); } if (!dic.ContainsKey("ValueofDictionary")) { throw new FluentDataException("model of the Entity must give a tag which indicating the value of dictionary."); } var key = dic["KeyofDictionary"]; var value = dic["ValueofDictionary"]; return(new QueryHandler <TDictionary>(source.Data).ExecuteMany(key, value)); }
private FluentData.IDbCommand GetDbCommand(IDbContext dbContext, QueryPara queryPara, QueryItem queryItem) { FluentData.IDbCommand dbCommand = dbContext.Sql(queryItem.ExecSql, queryPara.Parameters.ToArray()); foreach (var param in queryPara.ParamSet) { dbCommand = dbCommand.Parameter(param.Key, param.Value); } return(dbCommand); }