自己写的一个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
}
}
}
欢迎浏览!