本文主要是介绍asp.net ibaitsNet初始化SqlMap.config,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
说明:需要将保存sql语句的xml文件属性【生成操作改为嵌入的资源即可】否则就会抛出xml加载错误
public class ServiceConfig
{/// <summary>
/// 处理多线程
/// </summary>
static private object synRoot = new object();
/// <summary>
/// instance来存储创建好的类实例
/// </summary>
static private ServiceConfig instance;
/// <summary>
/// 定义一个ISqlMapper类型的daoManager字段
/// </summary>
private ISqlMapper daoManager = null;
/// <summary>
/// 私有化构造方法,好在内部控制创建实例的数目
/// </summary>
private ServiceConfig() { }
/// <summary>
/// 定义一个方法来为客户端提供类实例,这个方法需要定义成类方法(即静态方法),配置文件路径:AppSettings["SqlMapFilePath"]
/// </summary>
/// <returns></returns>
static public ServiceConfig GetInstance()
{
if (instance == null)
{
//在多线程的程序中,多个线程同时访问单例类,调用GetInstance()方法,会有可能造成创建多个实例在这种情况下,给进行加一把锁来处理
//lock是确保当一个线程位于代码的临界区时,另一个线程不进入临界区。如果其他线程试图进入锁定代码,则它将一直等,直到对象被释放。
lock (synRoot)
{
//判断存储实例的变量是否有值
if (instance == null)
{
try
{
//定义ConfigureHander事件的一个实例handler,并调用Service.Reset作为参数
ConfigureHandler handler = new ConfigureHandler(ServiceConfig.Reset);
DomSqlMapBuilder builder = new DomSqlMapBuilder();
//如果Instance为空,就创建一个类实例,并把值赋给存储类实例的变量instance.
instance = new ServiceConfig();
//返回一个DaoManager实例;
string filePath = System.Configuration.ConfigurationManager.AppSettings["SqlMapFilePath"];
filePath = AppDomain.CurrentDomain.BaseDirectory + filePath;
instance.daoManager = builder.ConfigureAndWatch(filePath, handler);
}
catch (Exception e)
{
Project.Core.ExceptionEx.Log4Util.Error(null, e.Message, e);
}
}
}
}
return instance; //如果Instance不为空,那就直接使用。
}
/// <summary>
/// Reset the singleton
/// </summary>
/// <param name="obj"></param>
static public void Reset(object obj)
{
instance = null;
}
/// <summary>
/// 定义一个属性ISqlMapper,它返回一个ISqlMapper类的一个实例
/// </summary>
public ISqlMapper DaoManager
{
get
{
return daoManager;
}
}
}
这篇关于asp.net ibaitsNet初始化SqlMap.config的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!