1,Code First
Code First 可以通过 C# 或者 VB.NET 来描述这些模型, 然后通过类来创建数据库. 这些类简称 POJO(Plian Old CRL Object).POCO 来源于 Java 的 POJO, 其中 J 就是 Java,POJO 是由马丁. 富勒 (Martin Fowler) 和其他人一同提出来的概念以反对在 20 世纪 90 年代早期受欢迎的 JavaBeans.POJO 概念提出的主要目标是显示域可以被成功建模, 而不会带来与执行环境相关的复杂表(JavaBeans 在早期版本中带来了很多), 同时执行环境与域建模完全无关. POJO 不能再. NET 中使用, 因此有了具备 POJO 相同语义 的 POCO. 这里的 C 指的是(Common Language Runtime,CLR 通用语言运行时) 中创建的一个简单对象. EF 4.0 之前生成的每个类都是从 EntityObject 基类继承而来的, 因此带来了许多特定于 EF 的复杂性. 而从 EF 4.0 开始, 框架引入了 POCO 数据模型, 允许使用不从 EntityObject 继承的类. 使用 Code First 模型可以完全以面向对象的方式来工作而不必担心数据库的结构, 这种抽象使我们能够创建更加灵活的应用程序. 其优点如下:
1), 这是最受欢迎的领域建模方式, 可以允许我们创建一个更富有的逻辑, 更灵活的应用程序;
2), 因为没有自动生成的代码是难以修改的, 所以它提供了我们对代码的 完全控制;
3), 通过这种方法我们只需要定义映射, 其余一切交给 EF 来处理, 包括创建数据库表以及表与表之间的关系;
4), 这种方式可以通俗易懂的成为代码定义数据库, 所以不推荐对数据库的手动修改;
5), 我们可以使用它来映射表结构到一个已存在的数据库.
栗子: VS2017 --->新建一个 MVC 项目 --->右击项目引用 --->管理 NeGet 程序包 --->浏览搜索 EntityFramework--->安装
然后在 Models 中添加两个类 Student 和 Class 表示学生表与班级表
- <喎"/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PC9wPgo8cD48c3Ryb25nPiC9qMGi0ru49sr9vt2/4snPz8LOxMDgIMXk1sPK/b7dv+LBtL3T19a3+7SuINTaSG9tZb/Y1sbG98Dvw+ay4srUv7S/tDwvc3Ryb25nPjwvcD4KCjxwcmUgY2xhc3M9"brush:java;">
- using System.Linq;
- using System.web;
- namespace EF3Class.Models
- {
- public class WYDB :DbContext
- {
- public WYDB() : base("SqlConn")
- {
- // 默认的初始化器. 这种初始化器在第一次运行程序时会创建数据库, 再次运行不会再创建新的数据库. 但是如果我们改变了领域类, 运行程序时会抛出一个异常
- //Database.SetInitializer(new CreateDatabaseIfNotExists());
- // 如果领域类发生了改变, 删除以前的数据库, 然后重建一个新的. 采用这种初始化器不用再担心领域类改变影响数据库架构的问题.
- //Database.SetInitializer(new DropCreateDatabaseIfModelChanges());
- // 每次运行程序都会删除以前的数据库, 重建新的数据库. 如果在开发过程中每次都想使用最新的数据库, 那么可以采用这种初始化器.
- Database.SetInitializer(new DropCreateDatabaseAlways());
- }
- public DbSet Student { get; set; }
- public DbSet Class { get; set; }
- }
- }
顺序别反了, 反了想知道啥效果自己测试一下.
- public ActionResult Index()
- {
- WYDB db = new WYDB();
- var c = db.Class.ToList();
- var s = db.Student.ToList();
- return View();
- }
运行起来看数据库里面
它就生成了对应的数据库, 是复数的形式, 也可以自己代码配置命名. 后面几章会说.
来源: https://www.2cto.com/kf/201905/809881.html