最近做一个项目是用动软生成的框架搭建的,但是我想大家也都清楚,动软生成的都是比较简单的表类而已,而且默认是只有一个数据库链接,通过DbHelperSQL.cs来操作链接的,但是如果涉及两个数据库交互的,我们怎么办呢?刚开始查询了好久也找不到答案,后来在动软官网也只是稍微提及而已,并没有说具体怎么使用,如下文:
如果在同一个项目中,希望同时连接多个数据库,由于DbHelperSQL是静态抽象类,不能实例化。 请使用用 DBUtility项目下 DbHelperSQLP.cs 类来实现同时连接多数据库的问题,它可以实例化多个数据库连接类。
例如:
DbHelperSQLP dbhelper1 = new DbHelperSQLP(PubConstant.GetConnectionString("ConnectionString1"));
DbHelperSQLP dbhelper2 = new DbHelperSQLP(PubConstant.GetConnectionString("ConnectionString2"));
但是具体是放在哪个位置也没有详细提及,也没说如何使用,我下面一个原始的类文件【直接修改dal层方法】:
using System;
using System.Data;
using System.Text;
using System.Data.SqlClient;
using Maticsoft.DBUtility;//Please add references
namespace MaxLaw.DAL
{
/// <summary>
/// 数据访问类:n_Sea_ex
/// </summary>
public partial class n_Sea_ex
{
public n_Sea_ex()
{
}
#region BasicMethod
/// <summary>
/// 是否存在该记录
/// </summary>
public bool Exists(long id)
{
StringBuilder strSql=new StringBuilder();
strSql.Append("select count(1) from n_Sea_ex");
strSql.Append(" where id=@id ");
SqlParameter[] parameters = {
new SqlParameter("@id", SqlDbType.BigInt,8) };
parameters[0].Value = id;
return DbHelperSQL.Exists(strSql.ToString(), parameters);
}
.......
#endregion BasicMethod
#region ExtensionMethod
#endregion ExtensionMethod
}
}
以上省略了很多生成的代码,主要是这句话链接库提取数据的:
return DbHelperSQL.Exists(strSql.ToString(), parameters);
因此我们只要把DbHelperSQL对象改为DbHelperSQLP对象,但是这个对象是需要提供链接字符串的,于是我们要先定义一个对象,所以修改如下:
using System;
using System.Data;
using System.Text;
using System.Data.SqlClient;
using Maticsoft.DBUtility;//Please add references
namespace MaxLaw.DAL
{
/// <summary>
/// 数据访问类:n_Sea_ex
/// </summary>
public partial class n_Sea_ex
{
DbHelperSQLP dbhelper2 = new DbHelperSQLP(PubConstant.GetConnectionString("ConnectionString2")); //定义dbhelper2对象,
public n_Sea_ex()
{
}
#region BasicMethod
/// <summary>
/// 是否存在该记录
/// </summary>
public bool Exists(long id)
{
StringBuilder strSql=new StringBuilder();
strSql.Append("select count(1) from n_Sea_ex");
strSql.Append(" where id=@id ");
SqlParameter[] parameters = {
new SqlParameter("@id", SqlDbType.BigInt,8) };
parameters[0].Value = id;
return dbhelper2.Exists(strSql.ToString(), parameters); //通过dbhelper2这个对象返回数据...
}
.......
#endregion BasicMethod
#region ExtensionMethod
#endregion ExtensionMethod
}
}
在当前实体类文件,添加一个数据库链接类dbhelper2,然后在吧该文件中所有的DbHelperSQL替换成dbhelper2即可。然后调用数据,正常流程走就好
2、最近发现可以直接在控制器层调用即可,不用在去修改dal方法,使得更明了更方便使用:
string sql = "inser into n_sea values(1,0,0,0,'xxx')";
DbHelperSQLP XMdb = new DbHelperSQLP(PubConstant.GetConnectionString("XMConnectionString")); //创建数据库链接类
XMdb.ExecuteSql(sql); //执行sql语句