1.1 功能介紹 使用ibatis.net ORM框架時,有時候需要操作多個資料庫,同時有時候也需要對連接資料庫信息進行加密,本文通過將配置連接寫到Web.config中, 這樣就可以在Web.config中加密,在讀取的地方再解密使用。 下麵是具體的配置方法,有更好方法的也歡迎指出, 對於ibat ...
1.1 功能介紹
使用ibatis.net ORM框架時,有時候需要操作多個資料庫,同時有時候也需要對連接資料庫信息進行加密,本文通過將配置連接寫到Web.config中,
這樣就可以在Web.config中加密,在讀取的地方再解密使用。
下麵是具體的配置方法,有更好方法的也歡迎指出, 對於ibatis.net 使用基礎知識,請參照其他資料
1.2 配置流程
(1)先配置sqlmap.config中database結點,隨便設置一個值,後面會重新設置這個連接值
<database> <provider name="sqlServer2005"/> <!--先隨便設置一個假連接,後面會重新賦值--> <dataSource name="iBatisNet" connectionString="data source=11;database=11;user id=11;password=11;connection reset=false;connection lifetime=5; min pool size=1; max pool size=50"/> </database>
(2)創建2個操作SqlMap的實體類(我這裡分主庫、中間庫2個資料庫)
//用於操作主庫 public class BaseDao {
public static readonly BaseDao Instance = new BaseDao();
private static ISqlMapper sqlMap; /// <summary> /// /// </summary> public BaseDao() { try { //載入當前所在的程式集 string sAssembly = this.GetType().Assembly.GetName().Name; Assembly assembly = Assembly.Load(sAssembly); string sqlMapPath = sAssembly + ".Config.sqlmap.config"; Stream stream = assembly.GetManifestResourceStream(sqlMapPath); DomSqlMapBuilder builder = new DomSqlMapBuilder(); sqlMap = builder.Configure(stream); //讀取資料庫連接串,設置為自定義字元串(如果加密,則需要先解密) string connString = System.Configuration.ConfigurationManager.AppSettings["MasterDB"]; sqlMap.DataSource.ConnectionString = connString; } catch (System.Exception ex) { throw ex; } } /// <summary> /// 供外層使用的數據操作對象 /// </summary> public ISqlMapper SqlMap { get { return sqlMap; } } }
public class MiddleBaseDao { public static readonly MiddleBaseDao Instance = new MiddleBaseDao(); private static ISqlMapper sqlMap; public MiddleBaseDao() { try { //載入當前所在的程式集 string sAssembly = this.GetType().Assembly.GetName().Name; Assembly assembly = Assembly.Load(sAssembly); //載入sqlmap.config string sqlMapPath = sAssembly + ".Config.sqlmap.config"; Stream stream = assembly.GetManifestResourceStream(sqlMapPath); DomSqlMapBuilder builder = new DomSqlMapBuilder(); sqlMap = builder.Configure(stream); //讀取資料庫連接串,設置為自定義字元串(操作中間庫) string connString = System.Configuration.ConfigurationManager.AppSettings["MiddleDB"]; sqlMap.DataSource.ConnectionString = connString; } catch (System.Exception ex) { throw ex; } } /// <summary> /// 供外層使用的數據操作對象 /// </summary> public ISqlMapper SqlMap { get { return sqlMap; } } }
(3)使用的時候就可以根據不同的資料庫操作,調用不同的SqlMap類
public IList<DmsSysPost> FindByCondExt(DmsSysPost obj) { return BaseDao.Instance.SqlMap.QueryForList<DmsSysPost>("DmsSysPost_FindByCondExt", obj); }
public IList<DmsSysPost> FindByCondExt(DmsSysPost obj) { return MiddleBaseDao.Instance.SqlMap.QueryForList<DmsSysPost>("DmsSysPost_FindByCondExt", obj); }
(4)最後在Web.config中配置一下2個連接串即可,到此配置完成
<appSettings> <!--主資料庫(可以加密)--> <add key="MasterDB" value="data source=.;database=MasterDB;user id=;password="/> <!--中間庫--> <add key="MiddleDB" value="data source=.;database=MiddleDB;user id=;password="/> </appSettings>
1.3 參考資料
http://blog.csdn.net/isprotect/article/details/8806974