Tired of writing the same block of code for the data access layer for each project, I extracted the common pieces out and put tons of unit test coverage.
- Execute Stored Procedure using SqlTransaction, SqlConnection and SqlCommand
- Access Restful Services using HttpClient
- Azure storages...
- PM> Install-Package DALs.Core -Version 1.0.6-beta -Pre
Update/Insert
/// <summary>
/// update ad.
/// </summary>
/// <returns>Task<System.Boolean>.</returns>
public async Task<bool> UpdateAsync()
{
var content = new SqlParameter("content", SqlDbType.VarChar) { Value = "Test" };
var id = new SqlParameter("id", SqlDbType.Int) { Value = 1 };
var config = new SqlConfiguration(ConnectionString, "UpdateAd") { SqlParameters = new List<SqlParameter> { content, id } };
return await sqlClient.CommandAsync(config) > 0;
}
Retrieve
/// <summary>
/// Gets ads.
/// </summary>
/// <returns>Task<IEnumerable<Ad>>.</returns>
public async Task<IEnumerable<Ad>> GetAsync()
{
var config = new SqlConfiguration(ConnectionString, Settings.GetAd, SprocMode.ExecuteReader);
return await sqlClient.QueryAsync(config, AdsLoader);
}
/// <summary>
/// Ads loader.
/// </summary>
/// <param name="reader">The reader.</param>
/// <returns>IEnumerable<Ad>.</returns>
public static IEnumerable<Ad> AdsLoader(IDataReader reader)
{
var ads = new List<Ad>();
while (reader.Read())
{
var adId = reader.Get<int>("ID");
var lastMod = reader.Get<DateTime>("ModificationDate");
var content = reader.Get<string>("Content");
var counter = reader.Get<long>("Counter");
var ad = new Ad
{
AdID = adId,
LastModificationDate = lastMod,
Content = content,
TestCounter = counter
};
ads.Add(ad);
}
return ads;
}