.NET Entity Framework (with Oracle ODP.NET) -Code First
介绍了.NET Entity Framework ,并演示了Model First模式,本文将继续讨论 Code First 模式的实现。
一、摘要
1、目标
本文验证了通过Oracle Data Provider for .NET (ODP.NET)使用Entity Framework (EF) Code First。先创建.NET类,通过框架在数据库中创建这些类对应的表;修改这些类,并通过Code First 将这些类的变化移植和映射到对应表中。
2、前言
Entity Framework 抽象关系型数据库的逻辑架构并映射到.NET应用中,为开发者提供了对象关系映射能力。Code First 让开发者开发的类转化为数据库的实体表。Code First Migrations 让类的变化精准地映射到数据库的对应表。
自从Oracle Data Access Components (ODAC) 12c Release 3 (12.1.0.2.1)这个版本开始,ODP.NET支持Code First 和 Code First Migrations 了,ODP.NET提供EF模型(Model)的数据库存、取及更新能力。
本文将建立EF程序,生成"Employee" 和"Department" 类,并添加这些类的对象数据。程序运行时,会将类映射到数据库表,并将对象存储为表记录行。然后为类添加新的属性,而这些属性会通过Code First Migrations添加到表的列信息。
3、环境条件
开始前,你应该满足以下条件:
- Visual Studio 2013 以上,.Net Framework 4.5以上
- Oracle 11g Release 2以上
- 将下载到你的工作目录(下载的文件为Programecs.txt)
- 请先阅读“通过NuGet 安装配置ODP.NET”,本文将告诉你如何安装和配置 Entity Framework 6 以及 ODP.NET,并通过一个控制台程序来验证相关使用。
- 如果你并不了解ODT是什么,本条可略。Oracle Developer Tools(ODT)可以集成到Visual Studio环境中辅助Oracle开发,但这对Code First并不是必须的。本文能过 Server Explorer 浏览Oracle数据库对象变化以验证Code First 对数据库的改变。如果你想用ODT的话请去Oracle官网上下载。
本文还将以Oracle 中自带的"HR"为例,但注意数据表对象的命名要避免冲突。
二、Code First
本部分将建两个类 "Employee" 、 "Department" ,并存储相关数据。当程序运行时,EF Code First会创建这两个类的对应表,并在生成类实例数据并保存时,会生成一个表的数据记录。
1、打开上一往篇文章中建立的项目(),打开app.config。在<connectionStrings> 配置节下修改用户名和密码,以连接HR数据库。注意链接的名字:OracleDbContext,我们会在后面的程序中用到这个名字
2、从下载的文件中copy出代码片段,粘到项目的Program.cs中。这段代码需要,这些配置在前一篇文章中已配置好了。仔细阅读代码会发现,数据库操作类OracleDbContext 名字与第1步所提到的 <connectionStrings> 配置节中的名字相同。程序使用 连接串信息连接数据库,然后创建 Employee 和 Department 的实例,并生成数据。
如下图,看下这两个类在程序中如何定义的。每个类都包含有可被读取和保存的字段。其中一个字段(Location)被注释了,后续会去掉这个字段的注释。
如果你不想使用HR架构,你可以在代码" modelBuilder.HasDefaultSchema("HR"); " 中,将HR替换成你想用的架构。
3、运行程序,将在数据库中创建 "Employees" 和 "Departments" 表,并各添加一条数据。注意,这些表名是大小写敏感的。
4、检查一下数据库中,这些表各数据是否正常添加。运行完程序后,在Server Explorer 中点开 HR.ORCL链接。此步操作需要安装配置 ODT (Oracle Developer Tools for Visual Studio)
请输入正确的密码
展开表,检查在类中定义的两个表是否被创建
右键Departments和Employees ,查询表数据,验证数据与程序中插入的一致性。
三、Code First Migration
类会随着业务需求和数据库架构的变化而改变类定义,本部分会改变Employee类来模拟这种变化 。只需少量代码,就能使类的变化同步到数据库表。
在第二部分代码中,第三个表_MigrationHistory同时被创建。这个表会跟踪Code First 类的变化。
本步将演示在Employee类中添加字段 Location ,并将它同步到数据库表中。
1、依次打开 View > Other Windows > Package Manager Console. 这个窗口的功能是用来输入Code First 的迁移命令,以同步.NET类和数据库结构。
2、在窗口里输入 Enable-Migrations 。这个命令是允许开启 Code First Migrations 功能。
3、在Program.cs 中去掉注释,模拟在Employee类中添加字段的情形。
4、在PMC窗口输入 Add-Migration First ,框架将会为数据模型Model 的变化 生成迁移代码。
5、在窗口中键入 Update-Database ,变化将同步到数据库
6、再看下数据库表的变化 。在Server Explorer打开 Employees表
验证下Location字段是否被添加
四、总结
本文要点如下:
- 使用ODP.NET 创建 Code First 应用,将类及数据存储到数据库表中
- 使用 Code First Migrations 更新数据库结构
推荐阅读
-
Entity Framework Code First属性映射约定
-
Entity Framework Code First属性映射约定
-
Byteart Retail V2 - 基于Entity Framework Code First的领域驱动设计实践案例
-
21.翻译系列:Entity Framework 6 Power Tools【EF 6 Code-First系列】
-
MySQL Entity Framework Code First 数据表大小写的问题
-
.NET Entity Framework (with Oracle ODP.NET) -Code First
-
MySQL & Entity Framework Code First 数据表大小写的问_MySQL
-
MySQL & Entity Framework Code First 数据表大小写的问_MySQL
-
21.翻译系列:Entity Framework 6 Power Tools【EF 6 Code-First系列】
-
Byteart Retail V2 - 基于Entity Framework Code First的领域驱动设计实践案例