最近做项目,又用到了以前做过的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()获取数据库类型

NHibernate动态加载资源文件的更多相关文章

  1. 动态加载资源文件(ResourceDictionary)

    原文:动态加载资源文件(ResourceDictionary) 在xaml中控件通过绑定静态资源StaticResource来获取样式Style有多种方式: 1.在项目的启动文件App中<App ...

  2. Style样式的四种使用(包括用C#代码动态加载资源文件并设置样式)

    Posted on 2012-03-23 11:21 祥叔 阅读(2886) 评论(6) 编辑 收藏 在Web开发中,我们通过CSS来控制页面元素的样式,一般常用三种方式: 1.       内联样式 ...

  3. QT下资源使用和资源占用…(可以动态加载资源文件,这样不占内存)

    原文地址:关于QT下资源使用和资源占用内存过多的问题作者:技术成就梦想     最近研究了一下如何从外部动态调用图片的问题,从而研究了图片资源的使用方法.网上最常见的帖子是这个,感觉总结的还不错. h ...

  4. C# System.Reflection.Assembly动态加载资源文件

    需求:需要做甘特图的显示,并且在甘特中加载图片.图片太多,写判断代码太多.用反射吧. 核心代码: try { if (stateColour < 0) return null; System.R ...

  5. 两种动态加载JavaScript文件的方法

    两种动态加载JavaScript文件的方法 第一种便是利用ajax方式,第二种是,动静创建一个script标签,配置其src属性,经过把script标签拔出到页面head来加载js,感乐趣的网友可以看 ...

  6. 【Unity3D】Unity3D之 Resources.Load 动态加载资源

    [Unity3D]Unity3D之 Resources.Load 动态加载资源 1.Resources.Load:使用这种方式加载资源,首先需要下Asset目录下创建一个名为Resources的文件夹 ...

  7. QUiLoader 动态加载.ui文件

    动态加载UI文件是指,用 Qt Designer 通过拖拽的方式生产.ui 文件.不用 uic工具把.ui 文件变成等价的 c++代码,而是在程序运行过程中需要用到UI文件时,用 QUiLoader ...

  8. 详解QUiLoader 动态加载.ui文件

    http://blog.chinaunix.net/uid-13838881-id-3652523.html 1.适用情况: 动态加载UI文件是指,用 Qt Designer 通过拖拽的方式生产.ui ...

  9. 从高德 SDK 学习 Android 动态加载资源

    前不久跑去折腾高德 SDK 中的 HUD 功能,相信用过该功能的用户都知道 HUD 界面上的导航转向图标是动态变化的.从高德官方导航 API 文档中 AMapNaviGuide 类的描述可知,导航转向 ...

随机推荐

  1. Redundant Call to Object.ToString()

    Redundant Call to Object.ToString() The + operator for string is overloaded to call String.Concat pa ...

  2. 总结@ 在C# 中的用法

    一 字符串中的用法 1.地球人都知道 C# 中 字符串常量可以以 @ 开头声名,这样的优点是转义序列“不”被处理,按“原样”输出,即我们不需要对转义字符加上 \ (反斜扛),就可以轻松coding.如 ...

  3. 一起啃PRML - 1.1 Example: Polynomial Curve Fitting 多项式曲线拟合

    一起啃PRML - 1.1 Example: Polynomial Curve Fitting @copyright 转载请注明出处 http://www.cnblogs.com/chxer/ 前言: ...

  4. 畅通工程 HDOJ--1863

    畅通工程 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  5. jquery mobile (一)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. 基于.NET平台的分层架构实战(六)——依赖注入机制及IoC的设计与实现[转]

    原文:http://www.cnblogs.com/leoo2sk/archive/2008/06/19/1225223.html 我们设计的分层架构,层与层之间应该是松散耦合的.因为是单向单一调用, ...

  7. Naive and Silly Muggles

    Problem Description Three wizards are doing a experiment. To avoid from bothering, a special magic i ...

  8. hdu 1159 Palindrome(回文串) 动态规划

    题意:输入一个字符串,至少插入几个字符可以变成回文串(左右对称的字符串) 分析:f[x][y]代表x与y个字符间至少插入f[x][y]个字符可以变成回文串,可以利用动态规划的思想,求解 状态转化方程: ...

  9. itunes备份文件解析入门

    itunes提供给设备备份的功能,不知道怎么备份的话可以戳一下这个看一下:http://jingyan.baidu.com/article/92255446ea8f46851648f4a4.html ...

  10. bash shell——与if条件相关的参数意义

    最近编写脚本,常看到有 if [ -x $variable ] 类的条件语句,不知道相应参数的意义到底是什么, 特摘录如下:from   http://blog.csdn.net/aaaaatiger ...