zoukankan      html  css  js  c++  java
  • EntityFramework简介

    EntityFramework是什么?

    1.是对ADO.NET 更高封装的ORM (对象关系映射)框架,跟Nhibernate类似

    2.用面向对象的方式来操作关系数据库

    3.目标: 提高开发效率,减轻维护工作

    4.原理

    LINQ to Entities 和 Entity SQL : EF 的两种查询语言,前者用Linq 方式查询,后者用SQL方言(比较少用)

    Object Service : 将 Entity Client Data Provider 返回的数据 转换成 实体对象结构

    Entity Client Data Provider : 主要作用是将 LINQ to Entities 和 Entity SQ 这些查询转换为 数据库的SQL查询

    ADO.Net Data Provider : 执行 Entity Client Data Provider 生成的数据库SQL

    总结 :  面向对象查询--> 通过EF ->生成相应数据库SQL --> ADO.NET 执行 

     

    怎么用?

    1 . 生成实体框架模型

      右击项目->添加->新建项->ADO.NET 实体数据模型->添加-  >下一步->新建连接或者使用已有连接->

    选择保存敏感数据->下一步->选择要映射的表,存储过程或者其他对象->完成

     2 .增删改查

        static void Main(string[] args)
            {
                using (AnuoDogEntities1 db = new AnuoDogEntities1())
                {
                    //增加
                    UserInfo uf = new UserInfo();
                    uf.UserName = "anuo";
                    uf.PassWord = "123";
                    uf.Address = "成都";
                    db.AddToUserInfo(uf);
                    db.SaveChanges();
    
                    //删除
                    UserInfo ufd = db.UserInfo.FirstOrDefault(ee => ee.UserName == "anuo");
                    db.DeleteObject(ufd);
                    db.SaveChanges();
    
                    //修改
                    UserInfo ufx = db.UserInfo.FirstOrDefault(ee => ee.UserName == "anuo");
                    ufx.UserName = "anuodog";
                    db.SaveChanges();
    
                    //查询 LINQ to Entities 
                    var data =
                        from userInfo in db.UserInfo
                        where userInfo.UserName == "anuo"
                        select new
                        {
                            userName = userInfo.UserName,
                            password = userInfo.PassWord
    
                        };
                    string name = "";
                    foreach (var item in data)
                    {
                        name += item.userName;
                    }
    
                    //表连接查询(左连接)
                    var query =
                        from userInfo in db.UserInfo
                        join productInfo in db.ProductInfo
                        on userInfo.Id equals productInfo.UserId
                        select new
                        {
                            userName = userInfo.UserName,
                            productName = productInfo.ProductName
                        };
                }
            }

    应用场景?

    优点 : 开发效率高,适合简单数据操作

    缺点 : 性能低 , 不适合复杂数据操作

    怎么个性能低?

    比原生的ADO.NET 确实慢得多. 适合小数据简单操作

    原文链接 : 

    http://blogs.msdn.com/b/adonet/archive/2012/02/14/sneak-preview-entity-framework-5-0-performance-improvements.aspx   

    开发模式?

    Database First  数据库首先 : 先设计好数据库 ,再从数据库生成实体模型

    Model First  模型优先 : 先设计好模型 ,再从模型生成数据库

    Code First  代码优先 : 编好代码,再从代码生成或映射数据库

                

    资源?

    入门: http://www.cnblogs.com/xray2005/category/189491.html

    教程: http://www.entityframeworktutorial.net/

    MSDN:

    http://msdn.microsoft.com/zh-cn/library/bb399572(v=vs.100).aspx

    主页: http://msdn.microsoft.com/zh-CN/data/ef

    源码: https://github.com/aspnet/EntityFramework

    团队blog:  http://blogs.msdn.com/b/adonet/


  • 相关阅读:
    JSP九大内置对象的作用和用法总结(转)
    Java web的几种异常处理 (转)
    response.getWriter().write()与out.print()的区别(转)
    【JavaWeb】Session(转)
    java web中cookies的用法 转
    1123
    1120
    jsp 内置对象
    include与jsp:include区别
    11.24作业1
  • 原文地址:https://www.cnblogs.com/anuo/p/3751205.html
Copyright © 2011-2022 走看看