【发布时间】:2010-01-05 12:56:49
【问题描述】:
是否可以在应用程序启动时缓存数据库连接的实例?
查看MSDN documentation 的线程安全,我引用:
这种类型的任何公共静态 [...] 成员都是线程安全的。不保证任何实例成员都是线程安全的。
鉴于此,以下示例的代码是否可以接受/安全:
public static class BookingMapper
{
public static Database Db { get; set; }
static BookingMapper()
{
Db = DatabaseFactory.CreateDatabase();
}
public static string GetBooking(int id)
{
using (DbCommand cmd = Db.GetStoredProcCommand("getBooking"))
{
Db.AddInParameter(cmd, "@Id", DbType.Int32, id);
using (IDataReader dr = Db.ExecuteReader(cmd))
{
...
}
}
}
}
如果可以接受,与简单地在每个方法调用上实例化数据库相比,使用这种方法有什么好处/缺点?
提前致谢。
更新:
进一步的研究将我指向 PrimaryObjects.com article,在 Putting the Database Factory to Use 部分中表明这是可以接受的。但我仍然想知道这样做是否有优点/缺点?
【问题讨论】:
标签: asp.net database enterprise-library