public class DBProvider
{
private DBProvider()
{ } static DBProvider()
{
GetProvider();
} private static IDataProvider _instance = null;
private static object lockHelper = new object();
private static void GetProvider()
{
try
{
_instance = (IDataProvider)Activator.CreateInstance(Type.GetType(string.Format("cq.Fdc.Data.SqlServer.DataProvider,cq.Fdc.Data.SqlServer"), false, true));
}
catch(Exception ex)
{
throw new Exception("实现接口时出现异常!!!"+ex.ToString());
}
}
/// <summary>
/// 返回接口对象
/// </summary>
/// <returns></returns>
public static IDataProvider GetInstance()
{
if (_instance == null)
{
lock (lockHelper)
{
if (_instance == null)
{
GetProvider();
}
}
}
return _instance;
}
}
这个是程序中构建数据库访问对象时候的代码。这里用到的单键模式,是否会对访问造成影响???如果去掉会有什么后果?
{
private DBProvider()
{ } static DBProvider()
{
GetProvider();
} private static IDataProvider _instance = null;
private static object lockHelper = new object();
private static void GetProvider()
{
try
{
_instance = (IDataProvider)Activator.CreateInstance(Type.GetType(string.Format("cq.Fdc.Data.SqlServer.DataProvider,cq.Fdc.Data.SqlServer"), false, true));
}
catch(Exception ex)
{
throw new Exception("实现接口时出现异常!!!"+ex.ToString());
}
}
/// <summary>
/// 返回接口对象
/// </summary>
/// <returns></returns>
public static IDataProvider GetInstance()
{
if (_instance == null)
{
lock (lockHelper)
{
if (_instance == null)
{
GetProvider();
}
}
}
return _instance;
}
}
这个是程序中构建数据库访问对象时候的代码。这里用到的单键模式,是否会对访问造成影响???如果去掉会有什么后果?
{
private static IDataProvider _instance; public static IDataProvider GetProviderInstance()
{
if(_instance==null)
{
_instance=(IDataProvider)Activator.CreateInstance.......;
}
return _instance;
}....... 以及其它几十、上百个公共函数方法
}
这就行了。
在dal中声明一个属性来包装DbTransaction,
bll中得到.用事务的方法传同一个DbTransaction
public interface IDataBase<T>
{
int GetMaxId();
bool Exists(string primaryKeyId);
void Add(T t);
void Update(T t);
}
看看微软企业库
这与这个就看不出来了。不知道你的
string.Format("cq.Fdc.Data.SqlServer.DataProvider,cq.Fdc.Data.SqlServer")
中的cq.Fdc.Data.SqlServer具体内容是什么,就不能看出“是否构成影响”。
namespace cq.Fdc.Data.SqlServer
{
public partial class DataProvider : IDataProvider
{
方法。。
}
}