.NET兼职社区
防止重复造轮子。可以直接使用
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Configuration;
namespace Wpf.PersonnelNotice
{
public sealed class AdoNetAsyncHelper
{
private static readonly Lazy<AdoNetAsyncHelper> lazy =
new Lazy<AdoNetAsyncHelper>(() =>
{
string connectionString = ConfigurationManager.ConnectionStrings["DatabaseConnection"].ConnectionString;
return new AdoNetAsyncHelper(connectionString);
});
public static AdoNetAsyncHelper Instance {
get {
return lazy.Value; } }
private readonly string _connectionString;
private AdoNetAsyncHelper(string connectionString)
{
_connectionString = connectionString;
}
// 异步插入
public async Task<int> InsertAsync<T>(string tableName, T entity, params string[] columns)
{
using (var connection = new SqlConnection(_connectionString))
{
await connection.OpenAsync();
var command = BuildInsertCommand(tableName, entity, columns);
command.Connection = connection;
return await command.ExecuteNonQueryAsync();
}
}
// 异步更新
public async Task<int> UpdateAsync<T>(string tableName, T entity, string primaryKeyColumn, params string[] columns)
{
using (var connection = new SqlConnection(_connectionString))
{
await connection.OpenAsync();
var command = BuildUpdateCommand(tableName, entity, primaryKeyColumn, columns);
command.Connection