• Entity Framework 基础


      在忙碌中渡过了5,6,7 月份,现在些抽点时间对Entity Framework的使用做一些基础的回忆。

    Entity Framework 是什么?

      Entity Framework(EF)和我们所熟悉的ADO.NET差不多,都提供对数据库访问和操作的对象,不过各自也有所不同之处。

      ADO.NET提供了一套对底层数据库操作的对象模型,抽象层次较底,操作效率和性能较高,是日常开发中访问数据库常用方式。

      EF的抽象层次较高:它把数据库映射为DbContext,把数据库对象都转换成应用程序对象 (entity),而数据字段都转换为属性 (property),关系则转换为结合属性 (association)。在系统开发上提升了不少效率,使用EF能很容易提升易维护,易扩展的系统。

      EF 同时也支持 Linq , Lambda 编写查询等相关数据库操作,不需要懂SQL语法也能熟练操作数据库。

      因为EF把数据库对象都转换成实体对象存储在内存中,所以EF在使用过程中是比较占内存。加上抽象层次较高在访问底层数据库模型需做转换,在数据库操作性能上一般没ADO.NET高。这是在享用EF的弊端。

      EF在项目中主要是一个:*.edmx文件。EF 主要分为三层:

      (1)概念模型(Conceptual Model):主要体现为一组可以被应用程序直接使用的类。这些类也是我们在程序中直接使用的类,通常称之为“实体(Entity)”

      (2)存储模型(Storage Model):主要体现为一组与底层数据存储介质(比如数据库系统)直接对应的类。

      (3)概念-存储模型映射(Conceptual- Storage Mapping),解决“概念模型”中的类如何与“存储模型”中的类相互对应的问题。

    Entity Framework 创建

    1.在VS2012创建EF文件,并选择Database First开发模式。

    2.配置EF所需连接的数据库。

    3.配置完成后我们可以看到EF的真面目。左边展示为:数据库对应表的映射内容。 

    4.在左边空白处右键-->"映射详细信息"可以查询数据库映射表的详细内容可做相应修改, “模型浏览器”可以查询到EF的三层结构:概念模型,概念-存储模型映射,存储模型。

    Entity Framework 使用CRUD

    1. 增加数据

    WebSiteDBEntities entity = new WebSiteDBEntities();
    
    Users user
    = new Users() { Account = "9245162", Code = "10003", Pwd = "123456", Isadmin = true }; entity.Users.Add(user); entity.SaveChanges();

    执行结果:

    2.查询数据

    //Linq 查询
    var Query_User_TO_Linq = from c in entity.Users where c.Account == "9245162" select c;
    foreach (var Users in Query_User_TO_Linq)
        Console.WriteLine("Linq 查询结果:帐号:{0},编码:{1}", user.Account, user.Code);
    
    //Lambda 查询
    var Query_User_TO_Lambda = entity.Users.Where(c => c.Account == "9245162").ToList();
    foreach (var Users in Query_User_TO_Lambda)
        Console.WriteLine("Lambda 查询结果:帐号:{0},编码:{1}", user.Account, user.Code);
    
    //SQL 查询 var Query_User_TO_SQL = entity.Users.SqlQuery("Select * from Users Where Account='9245162' ").ToList(); foreach (var Users in Query_User_TO_SQL) Console.WriteLine("SQL 查询:帐号:{0},编码:{1}", user.Account, user.Code);

    执行结果:

    3.修改数据

    Users uuser = entity.Users.First(c => c.Code == "10003");
    uuser.Account = "CK9245162";
    entity.Users.Attach(user);
    entity.Entry(uuser).State = System.Data.EntityState.Modified;
    entity.SaveChanges();

    4.删除数据

    Users duser = entity.Users.First(c => c.Account == "9245162");
    entity.Users.Remove(duser);
    entity.SaveChanges();

    Entity Framework  三种开发模式

    DataBase First: 传统的表驱动方式创建edm,然后通过edm生成模型和数据层代码。
    Model First : 先创建edm模型,再生成DDL数据库脚本和模型和数据层代码。
    Code First : 手动创建POCO模型,数据层DbContext及映射关系,通过Database.SetInitializer生成数据库,这种方式较灵活,但是代码工作较多。

  • 相关阅读:
    索引有什么用?
    数据类型的优化策略?
    MySQL的锁策略有什么?
    行锁
    Innodb_lock_waits
    Innodb_locks表
    软件安装笔记
    Spring Boot学习笔记
    AI学习总结
    笔试面试题总结
  • 原文地址:https://www.cnblogs.com/caokai520/p/4640879.html
Copyright © 2020-2023  润新知