最近做项目,又用到了以前做过的ORM框架--NHibernate。

此次想要实现的目标:

1.简单SQL用NHibernate的Session的CRUD方法实现

2.复杂SQL用Native SQL实现

3.数据库可能有多个,且有可能是不同的数据库类型,如A系统用Oracle,B系统用MSSQL

(第一点很简单,可以参照其他博客;本节主要记录第二点第三点,关于如何配置多数据库下次记录)

复杂SQL的实现,且针对不同数据库,那么需要加载不同的资源文件。

关于资源文件,请参考http://blog.csdn.net/config_man/article/details/38038249

那么我们需要针对不同的数据库,来过滤资源文件。

想法如下:

Oracle数据库复杂SQL语句文件:XXX.Oracle.hbm.xml、XXX.Oracle.hbm.xml

MSSQL数据库复杂SQL语句文件:XXX.SQLServer.hbm.xml、XXX.SQLServer.hbm.xml

MySQL数据库复杂SQL语句文件:XXX.MySQL.hbm.xml、XXX.SQLServer.hbm.xml

通过配置文件获取数据库类型,然后根究文件名后缀的不同来加载何种资源文件。

代码如下:

                     foreach (string resource in mappingAssembly.GetManifestResourceNames())
{
//截取资源文件的数据库类型
int lastIndexOf = resource.LastIndexOf(".hbm.xml");
string dataBaseType = resource.Substring(,lastIndexOf);
dataBaseType = dataBaseType.Substring(dataBaseType.LastIndexOf(".")+); if (GetDatabaseType().ToUpper().Equals("SQLSERVER"))
{
//若资源文件不是SQLSERVER类型,下个循环
if (!dataBaseType.ToUpper().Equals("SQLSERVER"))
{
continue;
}
}
else if (GetDatabaseType().ToUpper().Equals("ORACLE"))
{
//若资源文件不是ORACLE类型,下个循环
if (!dataBaseType.ToUpper().Equals("ORACLE"))
{
continue;
}
}
else if (GetDatabaseType().ToUpper().Equals("MYSQL"))
{
//若资源文件不是MYSQL类型,下个循环
if (!dataBaseType.ToUpper().Equals("MYSQL"))
{
continue;
}
}
else
{
//不是以上三种类型数据库,不加载资源文件
continue;
}
using (Stream stream = mappingAssembly.GetManifestResourceStream(resource))
{
using (StreamReader reader = new StreamReader(stream))
{
_configuration.AddXmlString(reader.ReadToEnd());
}
}
}

其中

mappingAssembly是Assembly类型,
_configuration是NHibernate.Cfg.Configuration类型
GetDatabaseType()获取数据库类型

最新文章

  1. 进程间通信(linux)(转)
  2. 关于JS的数据类型的一些见解
  3. MySQL 循环执行kill语句杀掉连接
  4. Socket原理与编程基础(转)
  5. Bzoj 2186: [Sdoi2008]沙拉公主的困惑 乘法逆元,线性筛,欧拉函数,数论
  6. jQuery 自学笔记—5 遍历
  7. 【一天一道LeetCode】#257. Binary Tree Paths
  8. firefox 屏蔽Backspace按键的后退功能
  9. SpringCloud系列五:Ribbon 负载均衡(Ribbon 基本使用、Ribbon 负载均衡、自定义 Ribbon 配置、禁用 Eureka 实现 Ribbon 调用)
  10. 转:WKT、SRID、EPSG概念
  11. python 线程间通信之Condition, Queue
  12. Maven Docker部署
  13. T4 生成实体和简单的CRUD操作
  14. 你不知道的东西! c# == 等于运算符 和 Object.Equals()
  15. c# 短链接生成
  16. 2017-7-18-每日博客-关于Linux下的鲜为人知的10条命令.doc
  17. 使用Nexus创建私服
  18. weblogic启动一闪而过
  19. Linux安装Sqlmap等工具
  20. Maven学习 (三) 使用m2eclipse创建web项目

热门文章

  1. Android使用listView,BaseAdapter实现列表页
  2. Android 性能优化 四 布局优化merge标签的使用
  3. 【CF】259 Div.1 B Little Pony and Harmony Chest
  4. Android推送通知指南
  5. Rocky(dfs)
  6. clang failed with exit code 1 的常见情况
  7. Windows SharePoint Services 3.0编码开发工具和技巧(Part 1 of 2)
  8. Linux停SVN提交时强制写日志
  9. Web性能测试基本性能指标
  10. hive中sql解析出对应表和字段的调查