代码改变世界

一些简单的ADO.NET Entity Framework 的例子

2011-01-01 11:02  音乐让我说  阅读(544)  评论(0编辑  收藏  举报

 

自己写的一个EF例子,代码如下:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using EntityDAL;
using System.Data.Objects;

namespace WebUI
{
    public partial class _Default : System.Web.UI.Page
    {

        /// <summary>
        /// 加载事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, EventArgs e)
        {
            using (var eatCmsContext = new EatCMSEntities())
            {

                #region 示例1

                string esql = "select value c from EatCMSEntities.UserInfo as c order by c.Id desc skip 3 limit 10";
                ObjectQuery<UserInfo> objQuery = eatCmsContext.CreateQuery<UserInfo>(esql);
                objQuery = objQuery.Where("it.userAge>@userAge");
                objQuery.Parameters.Add(new ObjectParameter("userAge", 50));

                Response.Write("SQL语句为:" + objQuery.ToTraceString() + "<br/><br/><br/>");
                Response.Write("查询结果的类型信息为:" + objQuery.GetResultType() + "<br/>");

                ObjectResult<UserInfo> objResult = objQuery.Execute(MergeOption.NoTracking);
                Response.Write("查询结果的数量为:" + objResult.Count() + "<br/><br/>");

                foreach (var item in objQuery)
                {
                    Response.Write(item.userName + ":" + item.userAge + "<br/>");
                }

                #endregion

                #region 示例2

                string esql = "select value u from EatCMSEntities.UserInfo as u where u.userAge>@userAge order by u.Id desc";
                ObjectQuery<UserInfo> objQuery = eatCmsContext.CreateQuery<UserInfo>(esql, new ObjectParameter("userAge", 200000));
                //UserInfo userInfo = objQuery.First();   //如果objQuery中没有结果,则会发生异常
                UserInfo user = objQuery.FirstOrDefault();  //如果objQuery中没有结果,将会返回null 给user变量
                if (user == null)
                {
                    Response.Write("暂无记录!");
                    return;
                }
                Response.Write(user.userName + ":" + user.userAge + "<br/>");


                #endregion

                #region 示例3      Except(差集)方法、Intersect(交集)方法

                string esql1 = "select value u from EatCMSEntities.UserInfo as u";
                string esql2 = "select value u from EatCMSEntities.UserInfo as u where u.userAge>50";
                ObjectQuery<UserInfo> objQuery1 = eatCmsContext.CreateQuery<UserInfo>(esql1);
                ObjectQuery<UserInfo> objQuery2 = eatCmsContext.CreateQuery<UserInfo>(esql2);
                ObjectQuery<UserInfo> objQuery3 = objQuery1.Except(objQuery2);

                Response.Write("记录总数:" + objQuery3.Count() + "<br/><br/>");
                foreach (var item in objQuery3)
                {
                    Response.Write(item.userName + ":" + item.userAge + "<br/>");
                }

                #endregion

                #region 示例4       练习[增加]

                UserInfo u = new UserInfo() { userName = "冯小刚", userAge = 45 };
                eatCmsContext.AddToUserInfo(u);
                int result = eatCmsContext.SaveChanges();
                if (result == 0)
                {
                    Response.Write("插入失败!");
                }
                else
                {
                    Response.Write("插入成功!");
                    Response.Write("返回的值为:" + result + "<br/>" + "员工编号为:" + u.Id + "<br/>");
                    UserInfo newUser = eatCmsContext.UserInfo.FirstOrDefault<UserInfo>(newU => newU.Id == u.Id);
                    Response.Write("员工姓名:" + newUser.userName + "<br/>员工年龄:" + newUser.userAge);
                }

                #endregion

                #region 示例4       练习[修改]      注意:不能更新主键

                string esql = "select value u from EatCMSEntities.UserInfo as u where u.Id=@Id";
                ObjectQuery<UserInfo> objUserInfo = eatCmsContext.CreateQuery<UserInfo>(esql, new ObjectParameter("Id", 1020));
                UserInfo user = objUserInfo.FirstOrDefault<UserInfo>();
                if (user != null)
                {
                    user.userName = "吴宇森";
                    user.userAge = 58;
                    int result = eatCmsContext.SaveChanges();
                    if (result == 0)
                    {
                        Response.Write("修改失败!");
                    }
                    else
                    {
                        Response.Write("修改成功!" + result + "<br/>");
                    }
                }

                #endregion

                #region 示例4       练习[删除]

                UserInfo user = eatCmsContext.UserInfo.FirstOrDefault(u => u.Id == 1021);
                if (user == null)
                {
                    Response.Write("删除时,对象不存在,可能该对象已经被删除了!");
                    return;
                }
                eatCmsContext.DeleteObject(user);
                int result = eatCmsContext.SaveChanges();
                if (result == 0)
                {
                    Response.Write("删除失败!");
                }
                else
                {
                    Response.Write("删除成功!" + result + "<br/>");
                }

                #endregion

                #region 示例4       练习[调用存储过程]

                UserInfo user = eatCmsContext.proc_GetUserInfoById(1020).FirstOrDefault<UserInfo>();
                if(user == null)
                {
                    Response.Write("对象不存在!");
                    return;
                }
                Response.Write("姓名:" + user.userName + ",年龄:" + user.userAge);

                #endregion

            }

            #region 示例4       练习[事务]

            EatCMSEntities context = null;
            System.Data.Common.DbTransaction trans = null;
            try
            {
                context = new EatCMSEntities();
                context.Connection.Open();
                trans = context.Connection.BeginTransaction();

                UserInfo user = context.UserInfo.FirstOrDefault(u => u.Id == 999);
                user.userName = "诸葛亮";
                user.userAge = 1500;
                context.SaveChanges();

                UserInfo user2 = context.UserInfo.FirstOrDefault(u => u.Id == 1055);
                user2.userName = "李世民";
                user2.userAge = 1000;
                context.SaveChanges();

                trans.Commit();
                Response.Write("成功!");
            }
            catch (Exception)
            {
                Response.Write("出现异常!失败!");
                if (trans != null)
                {
                    trans.Rollback();
                }
            }
            finally
            {
                if (context != null && context.Connection.State != System.Data.ConnectionState.Closed)
                {
                    context.Connection.Close();
                }
            }

            #endregion
        }
    }
}

 

欢迎浏览!