仅使用get或as方法将DbConnection用作属性

时间:2019-04-28 14:59:12

标签: c# asp.net

我有一个一次性课程,其中包括数据库连接和内存缓存客户端。

我班上有一些数据。首先,它将查看数据缓存。如果缓存为空,则它将从数据库获取数据并缓存数据。

在不需要它之前,我不想打开数据库连接。但是,我不确定是否将数据库连接设置为属性,直到调用它才会打开连接。

我在下面的代码示例中显示了两个选项。让我知道哪一个更好,为什么?

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();
    }
}

0 个答案:

没有答案