NHibernate动态加载资源文件
2024-10-19 15:51:12
最近做项目,又用到了以前做过的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()获取数据库类型
最新文章
- 进程间通信(linux)(转)
- 关于JS的数据类型的一些见解
- MySQL 循环执行kill语句杀掉连接
- Socket原理与编程基础(转)
- Bzoj 2186: [Sdoi2008]沙拉公主的困惑 乘法逆元,线性筛,欧拉函数,数论
- jQuery 自学笔记—5 遍历
- 【一天一道LeetCode】#257. Binary Tree Paths
- firefox 屏蔽Backspace按键的后退功能
- SpringCloud系列五:Ribbon 负载均衡(Ribbon 基本使用、Ribbon 负载均衡、自定义 Ribbon 配置、禁用 Eureka 实现 Ribbon 调用)
- 转:WKT、SRID、EPSG概念
- python 线程间通信之Condition, Queue
- Maven Docker部署
- T4 生成实体和简单的CRUD操作
- 你不知道的东西! c# == 等于运算符 和 Object.Equals()
- c# 短链接生成
- 2017-7-18-每日博客-关于Linux下的鲜为人知的10条命令.doc
- 使用Nexus创建私服
- weblogic启动一闪而过
- Linux安装Sqlmap等工具
- Maven学习 (三) 使用m2eclipse创建web项目
热门文章
- Android使用listView,BaseAdapter实现列表页
- Android 性能优化 四 布局优化merge标签的使用
- 【CF】259 Div.1 B Little Pony and Harmony Chest
- Android推送通知指南
- Rocky(dfs)
- clang failed with exit code 1 的常见情况
- Windows SharePoint Services 3.0编码开发工具和技巧(Part 1 of 2)
- Linux停SVN提交时强制写日志
- Web性能测试基本性能指标
- hive中sql解析出对应表和字段的调查