我有一个asp .net网站,最近实施了迷你探查器来检测我的应用程序。我能够启动并运行,我将我的连接包裹起来(我正在使用dapper),如下所示:
public class DapperManager: IExecuteQuery, IDisposable
{
private readonly IDbConnection _connection;
public IDbConnection Connection
{
get { return _connection; }
}
public DapperManager(string cadenaConexion)
{
_connection = new StackExchange.Profiling.Data.ProfiledDbConnection(new
SqlConnection(cadenaConexion), MiniProfiler.Current);
_connection.Open();
}
public void Dispose()
{
_connection.Close();
_connection.Dispose();
}
}
我在类库中有这个类说类型,然后我有另一个类库来执行数据库操作,并执行以下操作:
class SomeClass
{
public string GetSomethingById(int id)
{
var dapper = new Types.DapperManager(Properties.Settings.Default.SomeConnectionString);
var thing = dapper.Connection.Query<string>(@"SELECT thing
FROM somewhere
WHERE id = @id", id).Single();
dapper.Dispose();
return thing;
}
}
然后在网站上我们有类似的东西
protected void Page_Load(object sender, EventArgs e)
{
var profiler = MiniProfiler.Current;
try
{
var id = GetFooId();
if (!IsPostBack)
{
using (profiler.Step("Get thing"))
{
var someClass = new SomeClass();
var something = someClass.GetSomethingById(id);
// do stuff
}
}
}
}
现在,当我运行页面时,我在sql上获得了几个DUPLICATE Reader。我仍然不明白这意味着什么或我如何解决它,或者如果它是我编码它的方式的问题。我在全球的asax中开始并完成了de profiler。
我真的很感激有关此事的任何启示。我是仪器和应用程序分析的新手。我为任何错过的拼写道歉。
我刚刚编写的示例代码,但它正是我正在做的事情。
提前致谢。