Asynchronous Programming in asp.net core with an example

#ConectionString from startup

public static string ConnectionString { get; private set; }
ConnectionString = Configuration.GetValue(“Data:DefaultConnection:ConnectionString”);

#method
[HttpGet(“userprofile/api/{categoryId}/gettopFiveUserbycategoryid”)] public async Task> GetTopFiveUserByCategoryId(Guid categoryId)
{
List summeries = new List();
String connectionString = Startup.ConnectionString;
if (categoryId != Guid.Empty)
{
summeries = await queryFactory.ResolveQuery().GetUserSummnaryByCategoryId(categoryId, connectionString);

}
else
{
summeries = await queryFactory.ResolveQuery().GetTopFiveUserSummary(connectionString);

}
summeries = new UserSummaryFilter().GetUserSummaryFilter(summeries,queryFactory,configuration);
return summeries;

}

#Task encapsulation
public async Task> GetUserSummnaryByCategoryId(Guid categoryId, string connectionString)
{
List userSummery = new List();
string query = String.Format(“SpTopUserCalculation null,'{0}'”, categoryId);
userSummery = await Task.Run(() => DataReaderToListHelper.DataReaderToList(connectionString, query));

return userSummery;
}

#helpers
public class DataReaderToListHelper
{
public static T DataReaderToObject(string connectionString, string query) where T : class, new()
{
SqlDataReader reader;
T obj = new T();
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
SqlCommand command = new SqlCommand(query, connection);
reader = command.ExecuteReader();

// T list = new T();

var columns = new List();
for (int i = 0; i < reader.FieldCount; i++) { columns.Add(reader.GetName(i)); } while (reader.Read()) { foreach (var prop in obj.GetType().GetProperties()) { try { PropertyInfo propertyInfo = obj.GetType().GetProperty(prop.Name); propertyInfo.SetValue(obj, Convert.ChangeType(reader[prop.Name], propertyInfo.PropertyType), null); } catch { continue; } } } } return obj; } public static List DataReaderToList(string connectionString, string query) where T : class, new()
{
List list = new List();

using (var connection = new SqlConnection(connectionString))
{
connection.Open();
SqlCommand command = new SqlCommand(query, connection);
SqlDataReader reader;
reader = command.ExecuteReader();
var columns = new List();
for (int i = 0; i < reader.FieldCount; i++) { columns.Add(reader.GetName(i)); } while (reader.Read()) { T obj = new T(); foreach (var prop in obj.GetType().GetProperties()) { try { PropertyInfo propertyInfo = obj.GetType().GetProperty(prop.Name); propertyInfo.SetValue(obj, Convert.ChangeType(reader[prop.Name], propertyInfo.PropertyType), null); } catch { continue; } } list.Add(obj); } } return list; } }

Leave a Reply

Your email address will not be published. Required fields are marked *