WCF-004:WCF中也可以使用Microsoft.Practices.EnterpriseLibrary

在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;
        }
    }
代码下载

你可能感兴趣的:(WCF-004:WCF中也可以使用Microsoft.Practices.EnterpriseLibrary)