EF执行存储过程返回DataSet

 public static System.Collections.Generic.IEnumerable<TElement> RunSP<TElement>(this Database self, string spName, params SqlParameter[] paras)
        {
            System.Collections.Generic.IEnumerable<TElement> entityList = new System.Collections.Generic.List<TElement>();
            DataSet set = self.RunSP(spName, paras);
            if ((set != null) && (set.Tables.get_Count() >= 1))
            {
                entityList = EntityHelper.GetEntityList<TElement>(set.Tables.get_Item(0));
            }
            return entityList;
        }

        public static DataSet RunSP(this Database self, string spName, params SqlParameter[] paras)
        {
            if (paras != null)
            {
                SqlParameter[] parameterArray = paras;
                for (int i = 0; i < parameterArray.Length; i = (int) (i + 1))
                {
                    SqlParameter parameter = parameterArray[i];
                    if (parameter.get_Value() == null)
                    {
                        parameter.set_Value(System.DBNull.Value);
                    }
                }
            }
            SqlDataAdapter adapter = new SqlDataAdapter();
            SqlConnection connection = self.Connection as SqlConnection;
            using (SqlCommand command = new SqlCommand(spName, connection))
            {
                adapter.set_SelectCommand(command);
                command.set_CommandType(CommandType.StoredProcedure);
                if (paras != null)
                {
                    SqlParameter[] parameterArray2 = paras;
                    for (int j = 0; j < parameterArray2.Length; j = (int) (j + 1))
                    {
                        SqlParameter parameter2 = parameterArray2[j];
                        command.Parameters.Add(parameter2);
                    }
                }
                DataSet set = new DataSet();
                adapter.Fill(set);
                adapter.SelectCommand.Parameters.Clear();
                return set;
            }
        }

        public static DataSet RunSP(this Database self, string spName, SqlTransaction tran, params SqlParameter[] paras)
        {
            if (paras != null)
            {
                SqlParameter[] parameterArray = paras;
                for (int i = 0; i < parameterArray.Length; i = (int) (i + 1))
                {
                    SqlParameter parameter = parameterArray[i];
                    if (parameter.get_Value() == null)
                    {
                        parameter.set_Value(System.DBNull.Value);
                    }
                }
            }
            SqlDataAdapter adapter = new SqlDataAdapter();
            SqlConnection connection = self.Connection as SqlConnection;
            using (SqlCommand command = new SqlCommand(spName, connection))
            {
                if (tran != null)
                {
                    command.set_Transaction(tran);
                }
                adapter.set_SelectCommand(command);
                command.set_CommandType(CommandType.StoredProcedure);
                if (paras != null)
                {
                    SqlParameter[] parameterArray2 = paras;
                    for (int j = 0; j < parameterArray2.Length; j = (int) (j + 1))
                    {
                        SqlParameter parameter2 = parameterArray2[j];
                        command.Parameters.Add(parameter2);
                    }
                }
                DataSet set = new DataSet();
                adapter.Fill(set);
                adapter.SelectCommand.Parameters.Clear();
                return set;
            }
        }

        public static System.Collections.Generic.IEnumerable<TElement> RunSql<TElement>(this Database self, string command, params SqlParameter[] paras)
        {
            System.Collections.Generic.IEnumerable<TElement> entityList = new System.Collections.Generic.List<TElement>();
            DataSet set = self.RunSql(command, paras);
            if ((set != null) && (set.Tables.get_Count() >= 1))
            {
                entityList = EntityHelper.GetEntityList<TElement>(set.Tables.get_Item(0));
            }
            return entityList;
        }

        public static DataSet RunSql(this Database self, string command, params SqlParameter[] paras)
        {
            if (paras != null)
            {
                SqlParameter[] parameterArray = paras;
                for (int i = 0; i < parameterArray.Length; i = (int) (i + 1))
                {
                    SqlParameter parameter = parameterArray[i];
                    if (parameter.get_Value() == null)
                    {
                        parameter.set_Value(System.DBNull.Value);
                    }
                }
            }
            SqlDataAdapter adapter = new SqlDataAdapter();
            SqlConnection connection = self.Connection as SqlConnection;
            using (SqlCommand command2 = new SqlCommand(command, connection))
            {
                command2.set_CommandType(CommandType.Text);
                if (paras != null)
                {
                    SqlParameter[] parameterArray2 = paras;
                    for (int j = 0; j < parameterArray2.Length; j = (int) (j + 1))
                    {
                        SqlParameter parameter2 = parameterArray2[j];
                        command2.Parameters.Add(parameter2);
                    }
                }
                adapter.set_SelectCommand(command2);
                DataSet set = new DataSet();
                adapter.Fill(set);
                adapter.SelectCommand.Parameters.Clear();
                return set;
            }
        }

        public static DataSet RunSql(this Database self, string command, SqlTransaction tran, params SqlParameter[] paras)
        {
            if (paras != null)
            {
                SqlParameter[] parameterArray = paras;
                for (int i = 0; i < parameterArray.Length; i = (int) (i + 1))
                {
                    SqlParameter parameter = parameterArray[i];
                    if (parameter.get_Value() == null)
                    {
                        parameter.set_Value(System.DBNull.Value);
                    }
                }
            }
            SqlDataAdapter adapter = new SqlDataAdapter();
            SqlConnection connection = self.Connection as SqlConnection;
            using (SqlCommand command2 = new SqlCommand(command, connection))
            {
                if (tran != null)
                {
                    command2.set_Transaction(tran);
                }
                command2.set_CommandType(CommandType.Text);
                if (paras != null)
                {
                    SqlParameter[] parameterArray2 = paras;
                    for (int j = 0; j < parameterArray2.Length; j = (int) (j + 1))
                    {
                        SqlParameter parameter2 = parameterArray2[j];
                        command2.Parameters.Add(parameter2);
                    }
                }
                adapter.set_SelectCommand(command2);
                DataSet set = new DataSet();
                adapter.Fill(set);
                adapter.SelectCommand.Parameters.Clear();
                return set;
            }
        }
时间: 2024-10-11 17:24:32

EF执行存储过程返回DataSet的相关文章

EF执行存储过程并且返回DataSet

个人想到的办法是,EF实质也是Ado那一套进化而来,所以想着肯定会有点联系.翻阅官方文档之后 看到一句解释:db.Database.Connection 返回上下文使用的链接.然后接着断点调试发现返回的就是 webcofing 里面的 <connectionStrings>连接数据库配置</connectionStrings> so~ 照搬Ado完事,代码如下: #region 获取DataSet返回结构集 public DataSet GetDataSet(string sql,

EF执行存储过程

//执行strSql/procSql 69 //返回受影响的行数 70 int i = dbsql.Database.ExecuteSqlCommand("exec getActionUrlId @name", parameters); 71 72 List<ActionUrl> dd01 = dbsql.Database.SqlQuery(typeof(ActionUrl), "exec getActionUrlId @name", parameter

EF执行存储过程时超时问题

异常信息:Message = EF "Timeout 时间已到.在操作完成之前超时时间已过或服务器未响应." ((IObjectContextAdapter)this).ObjectContext.CommandTimeout = 360;

EF执行SQL语句和存储过程

EF虽然使用对象化的方式避免了我们写SQL,但是对于部分SQL,例如需要复杂的查询.执行插入和删除等可以操作,直接执行SQL可以减少减少性能上的损失. 使用EF执行SQL可以通过ExecuteSqlCommand()和SqlQuery()两个方法.这两个方法适用场景如下: ExecuteSqlCommand()不返回执行的结果,只返回受影响的行数,所以适用于数据库修改,数据创建,更新和删除等操作: SqlQuery()则会返回查询到的结果,并将结果保存在数据实体中: 使用ExecuteSqlCo

EF中执行存储过程

SqlParameter[] parms = new SqlParameter[5]; SqlParameter parms0 = new SqlParameter("IsAll", int.Parse(parames.P1)); //生成一个参数并给参数赋值. SqlParameter parms1 = new SqlParameter("ForumId", int.Parse(parames.P2)); SqlParameter parms2 = new Sql

关于EF执行返回表的存储过程

1.关于EF执行返回表的存储过程 不知道为什么EF生成的存储过程方法会报错,以下方法可以使用,call是MySQL执行存储过程的命令 //存储过程的参数 MySqlParameter mySqlParameter = new MySqlParameter("@state", 1); //NavigationModel接受数据的模型 var navigationList = DbContext.Database.SqlQuery<NavigationModel>("

[转]Entity FrameWork利用Database.SqlQuery&lt;T&gt;执行存储过程并返回参数

本文转自:http://www.cnblogs.com/xchit/p/3334782.html 目前,EF对存储过程的支持并不完善.存在以下问题:        EF不支持存储过程返回多表联合查询的结果集.        EF仅支持返回返回某个表的全部字段,以便转换成对应的实体.无法支持返回部分字段的情况.        虽然可以正常导入返回标量值的存储过程,但是却没有为我们自动生成相应的实体.cs代码,我们还是无法在代码中直接调用或使用标量存储过程        EF不能直接支持存储过程中O

EF 调用存储过程、返回多结果集和OUTPUT参数 等问题

一.EF调用存储过程: 1.执行返回表类型的存储过程 先上存储过程 随手写的一个最简单的   .        Student.  Enrollment,Student   Enrollment.StudentIDStudent.StudentID  Enrollment.StudentID 执行存储过程的方法 是用直接执行sql的方式 我在我的文章第九篇 有过详细的介绍~大家可以先去看下 执行表的存储过程 其实是非常强大的 延迟加载 等都有体现 博客园的陆老师已经写了 写的非常清楚了~我这里就

Entity FrameWork利用Database.SqlQuery&lt;T&gt;执行存储过程并返回参数

2013-09-23 14:26 by xchit, 5084 阅读, 3 评论, 收藏, 编辑 目前,EF对存储过程的支持并不完善.存在以下问题: EF不支持存储过程返回多表联合查询的结果集. EF仅支持返回返回某个表的全部字段,以便转换成对应的实体.无法支持返回部分字段的情况. 虽然可以正常导入返回标量值的存储过程,但是却没有为我们自动生成相应的实体.cs代码,我们还是无法在代码中直接调用或使用标量存储过程 EF不能直接支持存储过程中Output类型的参数. 其他一些问题. 今天我们利用EF