我有一个一次性课程,其中包括数据库连接和内存缓存客户端。
我班上有一些数据。首先,它将查看数据缓存。如果缓存为空,则它将从数据库获取数据并缓存数据。
在不需要它之前,我不想打开数据库连接。但是,我不确定是否将数据库连接设置为属性,直到调用它才会打开连接。
我在下面的代码示例中显示了两个选项。让我知道哪一个更好,为什么?
public class ViewContentModel : IDisposable
{
#region get alternative
public virtual IDbConnectionFactory DbFactory
{
get { return HostContext.TryResolve<IDbConnectionFactory>(); }
}
private IDbConnection db;
public virtual IDbConnection Db
{
get { return db ?? (db = DbFactory.OpenDbConnection()); }
}
#endregion
#region method alternative
private IDbConnection db;
public virtual IDbConnection Db()
{
if (db != null)
return db;
var DbFactory = HostContext.TryResolve<IDbConnectionFactory>();
return db = DbFactory.OpenDbConnection();
}
#endregion
private ICacheClient cache;
public virtual ICacheClient Cache
{
get { return cache ?? (cache = HostContext.TryResolve<ICacheClient>()); }
}
public virtual void Dispose()
{
if (db != null)
db.Dispose();
}
}