代码改变世界

Entity Framework过程调用

2013-03-17 18:07  Echo.  阅读(254)  评论(1)    收藏  举报
            NorthwindEntities db = new NorthwindEntities();

            //返回一个集合
            SqlParameter[] selparms = new SqlParameter[] { new SqlParameter("@orderid", 10248) };
            var result = (from p in db.Orders.SqlQuery("execute dbo.GetOrderById @orderid", selparms) select p).ToList();
            var result1 = db.Database.SqlQuery<Categories>("select * from dbo.Categories where CategoryID = @categoryid;", new SqlParameter[] { new SqlParameter("@categoryid", 1) }).ToList();

            //返回标量值
            Type t = typeof(int);
            SqlParameter[] selcountparms = new SqlParameter[] { new SqlParameter("@orderid", 10248) };
            var result2 = db.Database.SqlQuery(t, "execute dbo.GetOrderProductNumber @orderid", selcountparms).Cast<int>().First();

            //返回受影响行数
            SqlParameter[] delparms = new SqlParameter[] { new SqlParameter("@orderid", 10248) };
            int i = db.Database.ExecuteSqlCommand("execute dbo.DropOrderDetailsByOrderId @orderid", delparms);

            //获取输出参数的值
            SqlParameter[] parms1 = new SqlParameter[] { new SqlParameter("@orderid", "10249"), new SqlParameter("@result", SqlDbType.NVarChar, 10) };
            parms1[1].Direction = ParameterDirection.Output;
            int rowsaffected = db.Database.ExecuteSqlCommand("execute [dbo].[testprocreturnparm] @orderid = 10249,@result = @result OUTPUT", parms1);
            string s = parms1[1].Value.ToString();


            //返回复杂类型
            List<Product> list = db.Database.SqlQuery<Product>("execute dbo.testproc @productid", new SqlParameter[] { new SqlParameter("@productid", 1) }).ToList();