Entity Framework 使用体验
1. 使用 Entity Framework 框架+LINQ + SQL 2008 实现与数据库交互(业务类不需要写代码),项目结构如下:

2. 添加数据库模型文件 TestSolutionDB.edmx

3. 业务类由TT 模板生成

4.实现数据为操作方法调用:
1 public partial class edit : System.Web.UI.Page 2 { 3 IUserInfoDAO UserDao = Core.UnityService.GetService<IUserInfoDAO>(); 4 5 protected void Page_Load(object sender, EventArgs e) 6 { 7 if (!IsPostBack) 8 { 9 if (Request.QueryString["id"] != null) 10 { 11 string id = Request.QueryString["id"]; 12 hidId.Value = id; 13 BindUserINfo(); 14 } 15 } 16 } 17 18 /// <summary> 19 /// 绑定信息 20 /// </summary> 21 private void BindUserINfo() 22 { 23 UserInfo user = UserDao.GetSingle(o => o.Id == hidId.Value); 24 if (user != null) 25 { 26 txtUserCode.Text = user.UserCode; 27 txtUserNameCn.Text = user.UserNamCn; 28 txtEmail.Text = user.EmailAdd; 29 txtPhone.Text = user.Phone; 30 } 31 } 32 33 /// <summary> 34 /// 修改 35 /// </summary> 36 /// <param name="sender"></param> 37 /// <param name="e"></param> 38 protected void Button1_Click(object sender, EventArgs e) 39 { 40 UserInfo user = UserDao.GetSingle(o => o.Id == hidId.Value); 41 user.UserCode = txtUserCode.Text.Trim(); 42 user.EmailAdd = txtEmail.Text.Trim(); 43 user.Phone = txtPhone.Text.Trim(); 44 user.UserNamCn = txtUserNameCn.Text.Trim(); 45 int i = UserDao.Update(user); 46 Response.Write("<script>alert('修改成功')</script>"); 47 } 48 49 /// <summary> 50 /// 删除 51 /// </summary> 52 /// <param name="sender"></param> 53 /// <param name="e"></param> 54 protected void Button2_Click(object sender, EventArgs e) 55 { 56 UserInfo user = UserDao.GetSingle(o => o.Id == hidId.Value); 57 int i= UserDao.Delete(user); 58 Response.Write("<script>alert('删除成功')</script>"); 59 } 60 }
5. 关键代码部分
View Code
/// <summary> /// 服务容器 /// </summary> public partial class UnityService { private static readonly string _Unity_Container_Name = "containers"; /// <summary> /// 创建Unity Container /// </summary> /// <returns>IUnityContainer</returns> public static IUnityContainer CreateUnityContainer() { UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity"); IUnityContainer container = new UnityContainer().LoadConfiguration(section, _Unity_Container_Name); return container; } /// <summary> /// 获取实例 /// </summary> /// <typeparam name="T"></typeparam> /// <returns></returns> public static T GetService<T>() { try { T rev; object unityContainer = HttpContext.Current.Application["unityContainer"]; //如果不存在 if (unityContainer == null) { unityContainer = CreateUnityContainer(); HttpContext.Current.Application["unityContainer"] = unityContainer; } IUnityContainer container = (UnityContainer)unityContainer; rev = container.Resolve<T>(); return rev; } catch (Exception ex) { throw ex; } } }
6. web.config 文件配置映射
View Code
<configSections>
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration, Version=2.1.505.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</configSections>
<!--Unity配置-->
<unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
<assembly name="TestSolution.OA.BLL"/>
<assembly name="TestSolution.OA.DAL"/>
<assembly name="TestSolution.OA.Entities"/>
<assembly name="TestSolution.OA.Utilities"/>
<assembly name="TestSolution.OA.Core"/>
<namespace name="TestSolution.OA.BLL"/>
<namespace name="TestSolution.OA.DAL"/>
<namespace name="TestSolution.OA.Entities"/>
<namespace name="TestSolution.OA.Utilities"/>
<namespace name="TestSolution.OA.Core"/>
<container name="containers" >
<!--数据访问组件 开始-->
<register type="IUserInfoDAO" mapTo="UserInfoBO">
<lifetime type="transient"/>
</register>
<!--数据访问组件 结束-->
</container>
</unity>
7. 修改 Global.asax.cs 文件
void Application_Start(object sender, EventArgs e) { // 在应用程序启动时运行的代码 Application["unityContainer"] =Core.UnityService.CreateUnityContainer(); } void Application_End(object sender, EventArgs e) { // 在应用程序关闭时运行的代码 Application["unityContainer"] = null; }

浙公网安备 33010602011771号