我的编程空间,编程开发者的网络收藏夹
学习永远不晚

EntityFramework 简单入个门

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

EntityFramework 简单入个门

任何一个和数据相关的系统里,数据持久化都是一个不容忽视的问题。

  一直以来,Java 平台出了很多 NB 的 ORM 框架,Hibernate、MyBatis等等。.NET 平台上,ORM 框架这一块一直没有一个能吊到让几乎所有开发人员改掉以拼写 SQL 语句访问数据库的习惯。

  实际上,在 .NET 平台上,也层出不穷的出现了很多类似的玩意儿,比如Nhibernate、Ibatis,还有微软的亲儿子——坑爹的 LinqToSQL。虽然这么多框架,但是真的没见过 .NET 平台的 ORM 框架能像 Java 里那样普及。

  所幸,微软又搞出来一个儿子——EntityFramework。前几个版本没用过,前几天直接了解了6.1.3版本的。。感觉,真 TMD 好用。。

  鉴于网上的所有教程都太教条式,入门时看起来很坑爹,所以将这篇心得做为随笔,供大家共同学习探讨。

 

一、安装框架

  首先,要添加环境。右键项目,可以在 NuGet 里直接安装。如下图:

EntityFramework 简单入个门

  

  安装完成以后,项目引用里新增了两个关于EntityFramework的引用,如下图:

EntityFramework 简单入个门

   到此,环境就配置好了。

 

 二、创建Context类和模型类

  0,准备数据库。

  写代码之前,我们得先有一个测试数据库,和一个测试表。

  这里我使用 SQLServer,表结构如下:EntityFramework 简单入个门

 

  EF的使用有三种模式:Model First、DataBase First 和 Code First。这几种First什么区别,没仔细研究。不过我这里使用的好像是 Code First 构建的项目。这种方式,我只是觉得方便,好用,感觉项目更干净,不用添加乱七八糟的代码和配置。

  1,添加模型类。

  EF 里的模型类和普通的类一样,无非是为类或属性添加一些属性标记对表的关系进行一些映射罢了。如下: 

EntityFramework 简单入个门

    [Table("Users")]    public class UserInfo
    {
        [Key]
        [StringLength(20)]
        [Column("Code")]        public string Code { get; set; }

        [StringLength(20)]        public string Name { get; set; }
    }

EntityFramework 简单入个门

 

   上面代码中,定义了以下几个关键信息:

    1,类 UserInfo 对应数据库里的 Users 表。

    2,Code 属性对应数据库里的 Code 字段(如果属性名和字段名相同,可以忽略这个配置,比如 Name 属性)。

    3,并且指明两个字符型属性的长度不能超过20个字符。

    4,指示 Code 属性所对应的列是主键列。

  (注:Table、Key、StringLength、Column 这几个类需要引用命名空间 System.ComponentModel.DataAnnotations 和 using System.ComponentModel.DataAnnotations.Schema )

 

   2,添加 DbContext 类。

   DbContext 类是 EF 的核心,封装了所有数据存取业务相关的逻辑。不管是增删改查还是事务什么什么,所有的数据库操作的业务都可以在这里搞定。。听起来很牛逼!

  听起来很牛逼,事实上更牛逼!

  虽然很牛逼,但是用起来超级简单。比如像下面的代码,就实现了一个简单的 DbContext 类:

EntityFramework 简单入个门

    public class DALContext : DbContext
    {        public DALContext() : base("name=DALContext")
        {
        }        public virtual DbSet<UserInfo> Users { get; set; }        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {

        }
    }

EntityFramework 简单入个门

  寥寥几行,完成了复杂的 DB 操作。

  上面代码简单说明一下:

    1,这个类名自己起,想叫啥叫啥,我这里叫 DALContext。

    2,这个类必需继承 DbContext 类。

    3,在构造方法里,调用父类的构造方法,指明如何连接数据库,这里可以是连接字符串,也可以是配置文件里配置的连接名称(连接名称必需前缀 name= )。

    4,virtual 声明的 DbSet<T> 类型的属性里封装了一大堆数据操作的业务逻辑,我们只需要操作该属性就行了。

    5,有几个表,就声明几个 DbSet<T> 类型的属性就行了。T 是前面代码中声明的 Model ,属性名自己随便起。

    6,OnModelCreating 方法有什么用?具体的我也不知道。

  (这个类要引用命名空间 System.Data.Entity)

  3,配置连接字符串

  打开配置文件,添加一个名为 DALContext 的连接字符串配置。如下图:  

EntityFramework 简单入个门

  (打开配置文件我们会发现,里面多了一些关于 entityFramework 的奇怪的东西。至于是不是必要的,删了会不会死人,我也不知道)

  至此,数据库表的映射就Ok了。

 
三、编写测试代码

  废话不说,上代码:

EntityFramework 简单入个门

        static void Main(string[] args)
        {            using (DALContext db = new DALContext())
            {                try
                {
                    db.Users.Add(new UserInfo() {
                        Code = DateTime.Now.Ticks.ToString(),
                        Name = "张三"
                    });

                    IEnumerable<UserInfo> users = db.Users.Where<UserInfo>(u => u.Name == "张三");                    foreach(var u in users)
                    {
                        Console.WriteLine(string.Format("{0} - {1}",u.Code,u.Name));
                    }

                    db.SaveChanges();
                }                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }

            Console.WriteLine("Press any key to exit");
            Console.ReadKey();
        }

EntityFramework 简单入个门

 

  在 Main 方法里,我们声明了一个 DALContext 对象 db,为了便于对象资源的释放,这里使用 using  将其包起来。

  这段代码实现了以下功能:

    1,访问 db 对象 的 Users 属性,使用 Add 方法像操作一个集合一样向数据库表里增加一条记录。

    2,访问 db 对象 的 Users 属性,使用 Where 方法根据条件查询一批数据对象,保存在变量 users 里,并循环输出到控制台。

    3,使用 db 对象的 SaveChanges 方法,将对数据库的变更提交。

  运行以后,结果如下:

EntityFramework 简单入个门

  上面例子实现了增加和查询功能,删除和修改功能类似于操作集合,只要保证最后调用 SaveChanges 方法将修改提交就行。


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

EntityFramework 简单入个门

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

2023-08-31

python入门之一个简单记事本

最近在练习一个关于python项目的列表,拿到列表看到这是要实现一个记事本功能,刚开始拿到题目真有点懵。虽然用python实现excel的处理已经很熟悉了,且已经把python的知识点都学了一遍,但是用起来还是不顺手呐。尤其是试验之后发现一
2023-01-31

Node.js简单入门前传

1.什么是NodeJS 简单的说 Node.js 就是运行在服务端的 JavaScript。 Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。 Node.js是一个事件驱动I/O服务端JavaScript
2022-06-04

hibernate入门的简单操作

单表基本操作首先映射要操作的数据库表:以Student为例:public class Student{ private Integer SId; private String Sname; private String SAge; publ
2023-06-03

MyBatis入门介绍(超简单)

MyBatis 简介MyBatis的前身叫iBatis,本是apache的一个开源项目, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis。MyBatis是支
2023-05-31

EVE-NG简单入门介绍

此篇文章简单的介绍下模拟器EVE-NG的使用,具体包括Dynamips设备导入与运行,IOL设备的导入与运行,QEMU设备的导入与运行,客户端软件的安装,物理网络与虚拟网络的结合等。一.导入镜像Dynamips是由法国人Chris Fill
2023-06-05

Saltstack快速入门简单汇总

saltstack是使用python编写的开源自动化部署与管理工具,拥有良好的扩展性以及优秀的执行效率,配置简单,可以工作在多平台上,经常被描述为 Func加强版+Puppet精简版。saltsatck优点:首先,速度快,基于消息队列+线程
2022-06-04

如何简单了解pythonp-入门

这篇文章给大家介绍如何简单了解pythonp-入门,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。简单了解pythonPython语言特色1. Python是一门解释性语言解释性语言:在系统中运行时需要使用解释器(如:p
2023-06-02

JCrontab简单入门实例详解

本文实例为大家分享了JCrontab简单入门,供大家参考,具体内容如下创建一个JavaWeb项目1、首先要下载JCrontab的相关jar包,Jcrontab-2.0-RC0.jar。放到lib文件夹下。 2、在src下新建文件jcront
2023-05-30

Node.js和Express简单入门介绍

仅仅入门如何用Node.js和Express搭建一个web服务器,没有说明太多概念性的东西。 一、 Nodejs简介 ==Node是JavaScript语言的服务器运行环境。== 所谓“运行环境”有两层意思:首先,JavaScript语
2022-06-04

Scrapy简单入门及实例讲解

Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中。其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以应用在获取API所返回的数据(例如 Am
2023-01-31

mac python学习开发简单入门

安装Mac自带python 在/usr/bin/python进入终端直接键入python即可进入交互模式或是python xxx.py 运行 写好的python程序Last login: Sat Aug 19 20:33:28 on tty
2023-01-31

编程热搜

目录