Closed LightningPH closed 2 years ago
dbContext.Dispose()
string connString = "Your connection string"; MsSqlContext dbContext = new MsSqlContext(connString); 释放方法是这样吗?dbContext= null;
================================ 如果在一个DbHelper类中,有一个静态属性,引用了MsSqlContext实例,如下: private static IDbContext _sqlServerDbContext; public static IDbContext SqlServerDbContext { get { if(_sqlServerDbContext == null) { _sqlServerDbContext = new MsSqlContext(new SQLServerConnectionFactory(strSqlServerConn)); } return _sqlServerDbContext; } set { _sqlServerDbContext = value; } }
正确的使用方法是不是如下? DbHelper.SqlServerDbContext.Xxx DbHelper.SqlServerDbContext =null 请Shuxin大神释疑,谢谢!
不建议你静态的
不建议用静态的,能详尽解释说明一下吗?C#新手请您指点一下。
@shuxinqin 请shuxin大神赐教!谢谢!
` using Chloe; using Chloe.SqlServer; using System.Configuration;
namespace CIM.Interface.Common.Helper { public class DbHelper { private static readonly string strSqlServerConn = ConfigurationManager.ConnectionStrings["SqlServerConnectionString"].ConnectionString;
private IDbContext _dbContext;
/// <summary>
/// SqlServer数据库上下文
/// </summary>
public IDbContext DbContext {
get {
if(_dbContext == null) {
_dbContext = new MsSqlContext(strSqlServerConn);
}
return _dbContext;
}
set {
_dbContext = value;
}
}
}
} `
问题:
如上使用方式对吗?希望使用DbHelper的理由是:连接字符串放在配置文件中,最终使用还要进行加密解密。
每次的增删改查,都要按如下方式做,对吗? DbHelper dbHelper = new DbHelper(); dbHelper.DbContext.Xxx; dbHelper.DbContext.Dispose();
原来打算使用DbHelper中的静态属性DbContext 引用MsSqlContext实例,结果静态属性释放后,其它地方再调用时,就报错,这是什么原因?是静态属性只有程序启动时进行初始化?后续再引用静态属性,其get方法,即使发现_dbContext == null,也不再给静态属性初始化?
大神有没有一个如何初始化Chloe框架使用的标准案例?SqlServer数据为例。
在new DbHelper(),涉及MsSqlContext的创建,涉及数据库的连接等,new DbHelper()是不是要放在try...catch...finally语句中?
嗯,不要设置成静态,要保证线程安全即可。 在web中都是通过ioc去创建DbContext,ioc会控制着对象的生命周期,不需要手动new 和dispose。 在其他类型的应用中就得自己控制了~
谢谢shuxin!
string connString = "Your connection string"; MsSqlContext dbContext = new MsSqlContext(connString); 释放方法是这样吗?dbContext= null;
================================ 如果在一个DbHelper类中,有一个静态属性,引用了MsSqlContext实例,如下: private static IDbContext _sqlServerDbContext; public static IDbContext SqlServerDbContext { get { if(_sqlServerDbContext == null) { _sqlServerDbContext = new MsSqlContext(new SQLServerConnectionFactory(strSqlServerConn)); } return _sqlServerDbContext; } set { _sqlServerDbContext = value; } }