在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的配置



  
    
    

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

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;
    }
}

代码下载