文章目录
一、EF 的介绍
- EF又称EntityFreamwork 是一个Object /Relational (对象映射)Mapping实体框架,简称ORM,可以在“SqlServer、Oracle、DB2、Mysql数据库上使用。我们可以将数据作为业务对象和实体进行处理,开发者可以使用Linq进行数据查询。
二、EF领域模型方式
- Code Firsrt 【推荐】
- Code First是通过C#来描述这些模型,然后通过类来创建数据库,这些类简称为POCO。POCO中的C指的是公共语言运行时(CLR)中创建的一个简单对象。
- POCO的定义:POCO代表对域对象使用尽可能简单的类,可以包含属性、方法等,但是方法不能实现持久化逻辑,也就是说POCO也可以包含业务逻辑。
- 优缺点
- 这是程序员最受欢迎的领域建模方式,可以允许我们创建一个更富有逻辑、更灵活的应用程序。
- 因为没有自定生成的代码是难以修改的,所以他提供了我们对代码的完全控制。
- 通过这种方法,我们只需要定义映射,其余的一切交给EF来处理,还包括创建数据库以及表之间的关系。
- 这种方式可以通俗易懂的称为代码定义数据库,所以不推荐对数据库手动修改。
- 我们还可以使用它来映射表结构到已存在的数据。
- Model First
- Model First 允许我们使用实体设计器在空模型中创建模型实体及其关系和继承层次结构,然后创建数据库,这种方法也被开发人员使用。
- 优缺点
- 如果你喜欢可视化应用程序中的数据结构或者不喜欢编写SQL,那么他将会被你所喜欢,因为他自动生成。
- 在此方法中,我们无法控制实体和数据库,因为自动生成的代码难以修改,所以这种建模方式已经越来越不被开发者使用,但是对于小型的且简单的项目,他仍行知有效。
- 要在POCO实体中添加额外的功能,我们不得不修改T4模板或者使用部分类来完成。
- 数据库模型的更改不是最佳选择,因为是由模型定义了数据库。
- DataBase First
- DataBase First使我们能够从现有的数据库创建模型,此方法减少了自动生成代码所需编写的代码量,同时也限制了我们使用生成的代码结构。
- 优缺点
- 如果我们已有DBA设计的数据来单独开发或现有已存在的数据库,那么他将作为首选。
- 通过EDM向导为我们创建实体、关系和继承层次结构,修改映射后还可以生成POCO实体。
- 要在POCO实体中添加额外的功能,必须通过T4修改模板或者使用部分类。
- 数据库的手动更改变为可能,因为数据库定义了领域模型,如果要修改数据库表结构,只需要从数据库更新实体模型即可。