我目前正在研究一个Web api项目,我们正在使用存储库模式,但不幸的是我们没有使用EF。
因此对于数据访问层,我们使用ADO.NET,在其中调用数据库上的存储过程。 我知道架构不好。
无论如何,我最近发现的问题(由于我在其他层上工作)是,即使所有层都是通过使用任务来实现的,而数据访问层却不是,并且如果我没有记错,异步方法调用链中有一个同步方法调用,它将整个过程变成同步的。
所以最初我有类似这样的方法:
function generateSnapshot() {
var video = document.querySelector('#camera-stream');
var hidden_canvas = document.querySelector('#canvas');
var context = hidden_canvas.getContext('2d');
var width = video.videoWidth;
var height = video.videoHeight;
if (width && height) {
hidden_canvas.width = width;
hidden_canvas.height = height;
// Make a copy of the current frame in the video on the canvas.
context.drawImage(video, 0, 0, width, height);
// Turn the canvas image into a dataURL that can be used as a src for our photo.
return hidden_canvas.toDataURL('image/png');
}
}
因此,在进行一些搜索之后,我将方法和类通常更改为类似的
public DataTable GetClients()
{
using (var conn = new SqlConnection(CMS))
{
using (var cmd = new SqlCommand("[dbo].[ClientsReturn]"))
{
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure;
conn.Open();
var adapter = new SqlDataAdapter(cmd);
var ds = new DataSet();
adapter.Fill(ds);
var T = ds.Tables[0];
return T;
}
}
}
这对您来说合适吗?有什么建议吗?
谢谢。