博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
初识EntityFramework6【转】
阅读量:5877 次
发布时间:2019-06-19

本文共 1874 字,大约阅读时间需要 6 分钟。

http://www.cnblogs.com/wujingtao/p/5401132.html

什么是EF?

EF是一种ORM(Object-relational mapping)框架,它能把我们在编程时使用对象映射到底层的数据库结构。比如,你可以在数据库中建立一个Order表,让它与程序中的Order类建立映射关系,这样一来,程序中的每个Order对象都对应着Order表中的一条记录,ORM框架负责把从数据库传回的记录集转换为对象,也可以依据对象当前所处的具体状态生成相应的SQL命令发给数据库,完成数据的存取工作(常见的数据存取操作可简称为CRUD:Create、Read、Update、Delete)。

EF的三种开发方式

EF支持三种开发模式: Code First、Database First和Model First。

方式一:Code First

对于初次接触的人,EF的Code First实在很有点魔幻色彩。下面就让我们来体会一下。 创建两个类:Book(书)和BookReview(书评)。一本书可以有多条书评,因此,它们是一对多的关系:

  1. public class Book
  2. {
  3. public virtual int Id {
    get; set;}
  4. public virtual string Name { get; set; }
  5. public virtual List<BookReview> Reviews { get; set; }
  6. }
  7. public class BookReview
  8. {
  9. public int Id{
    get; set;}
  10. public int BookId { get; set; }
  11. public virtual string Content { get; set; }
  12. public virtual Book AssoicationWithBook { get; set; }
  13. }

好了,现在创建一个派生自DbContext的子类:

  1. public class BookDb : DbContext
  2. {
  3. public DbSet<Book> Books { get; set; }
  4. public DbSet<BookReview> Reviews { get; set; }
  5. }

现在可以在程序中随意写几行代码从数据库中提取数据:

  1. static void Main(string[] args)
  2. {
  3. using (var context = new BookDb())
  4. {
  5. Console.WriteLine("数据库中有{0}本书",context.Books.Count());
  6. }
  7. }

运行一下,如果计算机上安装有SqlExpress,那么或者是在应用程序文件夹,或者是打开SQL Server Management Studio(SSME)查看本机SQLServer,你就会发现,数据库己经创建好,其中的表及表的关联也帮助你完成了:

运行结果

貌似我什么也没干,一切就OK了!

方式二:Database First

这是EF从1.0开始就支持的特性,其思路是:先设计并建好数据库,然后使用Visual Studio的向导创建EF数据模型并生成实体类代码。 这是最成熟稳定的方式,其设计器相当地完善,基本上能满足实际开发中的各种需求。 我个人认为这是开发正式项目最合适的方式。

方式三:Model First

这种模式是先在可视化设计器中创建实体和它们间的关联,然后设计器生成SQL命令并保存于一个SQL文件中,通过执行这一SQL文件完成数据库的创建和修改工作。

模型设计器

PS:这种方式在EF7中好像以被取消,所以也不推荐再使用了。

上面部分内容摘录自bitfan的专栏

比较CodeFirst和Database First

通过Code First构建数据库虽然方便,不过EF帮我们生成的数据表结构真的很一般。在上面的例子中,在Code First生成的表内NameContentBookId都是可以为空的,也就是说没有为它们建立约束。可要是使用Code First来建立约束就有点麻烦了,所以我们一般都不是通过代码来生成数据库,而是通过数据库来反向生成代码(Database First)。

这一节只是做个介绍,下一节我将演示一下如何使用EF连接数据库,特别是MySQL数据库。EF通过向导连接SQL Server基本上都是下一步,可连MySQL还需要些配置。

目录:

下一节:

你可能感兴趣的文章
看雪CTF第十四题
查看>>
模拟生命_吸烟致癌?
查看>>
[Contiki系列论文之1]Contiki——为微传感器网络而生的轻量级的、灵活的操作系统...
查看>>
Android 网络编程 记录
查看>>
微软同步发行Windows 10和Windows 10 Mobile系统更新
查看>>
Maven 传递依赖冲突解决(了解)
查看>>
Zeppelin的入门使用系列之使用Zeppelin运行shell命令(二)
查看>>
[Spark][Python]Spark Join 小例子
查看>>
form表单下的button按钮会自动提交表单的问题
查看>>
大战设计模式【11】—— 模板方法模式
查看>>
springBoot介绍
查看>>
Intellij IDEA 快捷键整理
查看>>
Redis 通用操作2
查看>>
11. Spring Boot JPA 连接数据库
查看>>
洛谷P2925 [USACO08DEC]干草出售Hay For Sale
查看>>
MapReduce工作原理流程简介
查看>>
那些年追过的......写过的技术博客
查看>>
小米手机解锁bootload教程及常见问题
查看>>
Python内置函数property()使用实例
查看>>
Spring MVC NoClassDefFoundError 问题的解决方法。
查看>>