在WCF服务中我一直是使用ADO.NET 实体模型来连接数据和操作数据库的,刚开始用时觉得比较新鲜,因为linq与sql语句的基本操作都有对应的使用方法,而且能直接获取到数据表的模型,大多情况下还是比较好用的。不过偶尔的时候要涉及到多表关联的复杂的sql语句的查询,写linq就比较麻烦了,要使用分步进行,就是先用linq查出一个条件,赋值给一个变量,然后再将这个变量作为下一个linq的查询条件,不大利于修改sql语句的变动。
因为本人是比较喜欢用sql语句的,即使是在使用linq时,也是现将sql语句写好,然后再转换的。所以我也会在项目中少量的使用Microsoft.Practices.EnterpriseLibrary进行连接,直接使用sql语句增删改查等。
Microsoft.Practices.EnterpriseLibrary生成的配置文件中的连接字符串格式和位置与ADO.NET 实体模型是一样的,所以也便于对配置文件的维护。下面看一下在WCF服务应用程序中如何使用。其实和前面写过的(http://blog.csdn.net/yysyangyangyangshan/article/details/8488791)用法是一样的,再次回顾一下吧。
首先Microsoft.Practices.EnterpriseLibrary的下载安装就不说了,直接搜索下载,新的旧的都可以,关键是在配置中把版本写对就可以了。
直接看web.config的配置

<?xml version="1.0" encoding="utf-8"?>
<configuration><configSections><!--添加配置企业库(1)--><section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings,Microsoft.Practices.EnterpriseLibrary.Data, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/></configSections><!--添加配置企业库(2)--><dataConfiguration defaultDatabase="MyConnectionString"/><system.web><compilation debug="true" targetFramework="4.0" /></system.web><system.serviceModel><behaviors><serviceBehaviors><behavior><!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false 并删除上面的元数据终结点 --><serviceMetadata httpGetEnabled="true"/><!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息 --><serviceDebug includeExceptionDetailInFaults="false"/></behavior></serviceBehaviors></behaviors><serviceHostingEnvironment multipleSiteBindingsEnabled="true" /></system.serviceModel><system.webServer><modules runAllManagedModulesForAllRequests="true"/></system.webServer><connectionStrings><add name="MyConnectionString" connectionString="DATA SOURCE=数据库名;Persist Security Info=True;User ID=用户名;Password=密码;Unicode=True" providerName="System.Data.OracleClient"/></connectionStrings></configuration>

其余用法都一样
执行的方法:

public class OracleSqlHelper{private static Database db = null;public static DataSet GetDataTable(string commandText){try{DataSet resultDataSet = null;db = DatabaseFactory.CreateDatabase();//建立数据库连接resultDataSet = db.ExecuteDataSet(CommandType.Text, commandText);//执行return resultDataSet;}catch (Exception ex){return null;}}public static DataSet GetDataTableByProcedure(string commandText){try{DataSet resultDataSet = null;db = DatabaseFactory.CreateDatabase();//建立数据库连接resultDataSet = db.ExecuteDataSet(CommandType.StoredProcedure, commandText);//执行存储过程return resultDataSet;}catch (Exception e){return null;}}}

你的调用方法:

public class OracleDataProvider
{public static DataTable TestReadTable(string id){DataTable dataTable = null;try{string commandText = "select tu.name from tabUser tu";DataSet resultTable = OracleSqlHelper.GetDataTable(commandText);int table = resultTable != null ? resultTable.Tables.Count : 0;if (table > 0){dataTable = resultTable.Tables[0];}}catch (Exception e){throw e;}return dataTable;}
}

代码下载

转载于:https://blog.51cto.com/yangyoushan/1315546

WCF-004:WCF中也可以使用Microsoft.Practices.EnterpriseLibrary相关推荐

  1. webservice mysql配置文件_在WebService中使用Microsoft.Practices.EnterpriseLibrary.Data配置数据库...

    标签: 1. 新建WebApplication1项目 1.1 新建-Web-ASP.NET Empty Web Application--WebApplication1 1.2 添加一个WebForm ...

  2. Microsoft.Practices.EnterpriseLibrary

    项目中使用了Microsoft.Practices.EnterpriseLibrary这个东西,根据名字猜测和微软有关系(可以翻译为:微软实践企业库). 看到了引入了两个命名空间: using Mic ...

  3. Microsoft.Practices.EnterpriseLibrary连接Oracle

    Microsoft Enterprise Library用起来也是挺不错的,对于习惯自己写sql语句的开发者们,这个应该挺好的.下面以连接Oracle为例简单介绍下如何连接数据库. 首先下载Micro ...

  4. 使用Microsoft.Practices.EnterpriseLibrary.Data调用存数过程Output参数注意事项

    最近拿了一个开源的源码看了下,在调试的过程中发现调用存数过程的output参数的时候一直出错,现在将问题记录下来. 问题描述: 1. 使用Microsoft.Practices.EnterpriseL ...

  5. Microsoft.Practices.EnterpriseLibrary.Data 数据库操作

    出处:Microsoft.Practices.EnterpriseLibMicrosoft.Practices.EnterpriseLibrary.Data 数据库操作 - 米高佐敦 - 博客园Mic ...

  6. oracle杨树,Microsoft.Practices.EnterpriseLibrary连接Oracle

    Microsoft Enterprise Library用起来也是挺不错的,对于习惯自己写sql语句的开发者们,这个应该挺好的.下面以连接Oracle为例简单介绍下如何连接数据库. 首先下载Micro ...

  7. 解决: 未能加载文件或程序集“Microsoft.Practices.EnterpriseLibrary.Data,

    在文件夹中找到这几个文件,替换成合适的版本即可

  8. 替换 wcf 消息传输中的 命名空间

    替换 wcf 消息传输中的 命名空间,http://vanacosmin.ro/Articles/Read/WCFEnvelopeNamespacePrefix 转载于:https://www.cnb ...

  9. WCF编程]WCF使用Net.tcp绑定时候出现错误:元数据包含无法解析的引用

    在WCF服务编程中,客户端添加引用服务时,出现如下错误: 元数据包含无法解析的引用:"net.tcp://192.168.1.105:1314/LoginService". 套接字 ...

最新文章

  1. (原創) 將map輸出到cout,是否有更方便的方法? (C/C++) (STL)
  2. 理解和配置 Linux 下的 OOM Killer
  3. overflowhidden用法思考
  4. 010_Raphael事件
  5. 记录一段让我吐血的代码
  6. 元祖python_python---tuple元祖
  7. 关于在用异步消息处理机制使用Message.Obtain()方法(而非New Message)获得一个Message对象的好处
  8. oracle sql last_value,図でイメージするOracle DatabaseのSQL全集 第3回 分析関数
  9. 在IDEA中安装使用Antlr
  10. 常用开发术语及工具001---NGF_TPS_墨刀手机原型页面设计工具
  11. bat批处理脚本执行过程中,Windows运行窗口中出现中文乱码
  12. 1.3 可移植性和标准
  13. Informix数据库学习随笔
  14. 用了这么多年百度搜索, 今天才发现加上双引号搜索结果这么准
  15. 一个域名引发的血案……
  16. ORA-03113: end-of-file on communication channel 解决方法
  17. dotween damage text 飘血伤害数字
  18. K8S给节点打标签和打污点
  19. btcTrade_project
  20. PowerDesigner16.5 逆向生成物理模型

热门文章

  1. ps自定义形状工具_【福利】3000款PS自定义形状免费打包下载
  2. 基于python的modbus协议编程_IM5D.6B利用(2.4G)无线模块实现远程控制(基于智能编程任务赛,2019版)...
  3. 在线ocr文字识别_PandaOCR:最佳免费 OCR 文字识别工具
  4. matlab2012生成dll,64位win7下vc2010如何調用matlab2012a中生成的dll文件
  5. linux 内核将两个设备相关联,linux用户空间和内核空间交换数据
  6. python安装pyinstaller出现错误_pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)...
  7. 重庆考区非计算机专业二级等级考试vf上机题怎么建立程序文件?,计算机等级考试一级上机试题...
  8. php的防csrf攻击,zblog php添加Token防止CSRF攻击
  9. linux进程看门狗使用方式,Linux系统中基于看门狗的精细化进程监控方法及系统的制作方法...
  10. python分代回收_python 垃圾回收——分代回收 和java有些区别 注意循环引用无法被回收...