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;

        }

 

posted @ 2012-07-04 23:10  飞翔的青春  阅读(157)  评论(0)    收藏  举报