欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

.NET Entity Framework (with Oracle ODP.NET) -Code First

程序员文章站 2022-05-18 22:55:23
上一篇文章介绍了.NET Entity Framework ,并演示了Model First模式,本文将继续讨论 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,我们会在后面的程序中用到这个名字

.NET Entity Framework (with Oracle ODP.NET) -Code First

 2、从下载的文件中copy出代码片段,粘到项目的Program.cs中。这段代码需要,这些配置在前一篇文章中已配置好了。仔细阅读代码会发现,数据库操作类OracleDbContext 名字与第1步所提到的 <connectionStrings> 配置节中的名字相同。程序使用 连接串信息连接数据库,然后创建 Employee 和 Department 的实例,并生成数据。

.NET Entity Framework (with Oracle ODP.NET) -Code First

如下图,看下这两个类在程序中如何定义的。每个类都包含有可被读取和保存的字段。其中一个字段(Location)被注释了,后续会去掉这个字段的注释。

.NET Entity Framework (with Oracle ODP.NET) -Code First

如果你不想使用HR架构,你可以在代码" modelBuilder.HasDefaultSchema("HR"); " 中,将HR替换成你想用的架构。

.NET Entity Framework (with Oracle ODP.NET) -Code First

 3、运行程序,将在数据库中创建 "Employees" 和 "Departments" 表,并各添加一条数据。注意,这些表名是大小写敏感的。

 4、检查一下数据库中,这些表各数据是否正常添加。运行完程序后,在Server Explorer 中点开 HR.ORCL链接。此步操作需要安装配置 ODT (Oracle Developer Tools for Visual Studio)

.NET Entity Framework (with Oracle ODP.NET) -Code First

 请输入正确的密码

.NET Entity Framework (with Oracle ODP.NET) -Code First

展开表,检查在类中定义的两个表是否被创建

.NET Entity Framework (with Oracle ODP.NET) -Code First

右键DepartmentsEmployees ,查询表数据,验证数据与程序中插入的一致性。

.NET Entity Framework (with Oracle ODP.NET) -Code First

.NET Entity Framework (with Oracle ODP.NET) -Code First

三、Code First Migration

类会随着业务需求和数据库架构的变化而改变类定义,本部分会改变Employee类来模拟这种变化 。只需少量代码,就能使类的变化同步到数据库表。

在第二部分代码中,第三个表_MigrationHistory同时被创建。这个表会跟踪Code First 类的变化。

本步将演示在Employee类中添加字段 Location ,并将它同步到数据库表中。

1、依次打开 View > Other Windows > Package Manager Console. 这个窗口的功能是用来输入Code First 的迁移命令,以同步.NET类和数据库结构。

.NET Entity Framework (with Oracle ODP.NET) -Code First

2、在窗口里输入 Enable-Migrations 。这个命令是允许开启 Code First Migrations 功能。

.NET Entity Framework (with Oracle ODP.NET) -Code First

3、在Program.cs 中去掉注释,模拟在Employee类中添加字段的情形。

.NET Entity Framework (with Oracle ODP.NET) -Code First

4、在PMC窗口输入 Add-Migration First ,框架将会为数据模型Model 的变化 生成迁移代码。

.NET Entity Framework (with Oracle ODP.NET) -Code First

5、在窗口中键入 Update-Database ,变化将同步到数据库

.NET Entity Framework (with Oracle ODP.NET) -Code First

6、再看下数据库表的变化 。在Server Explorer打开 Employees表

.NET Entity Framework (with Oracle ODP.NET) -Code First

验证下Location字段是否被添加

.NET Entity Framework (with Oracle ODP.NET) -Code First

四、总结

本文要点如下:

  • 使用ODP.NET 创建 Code First 应用,将类及数据存储到数据库表中
  • 使用 Code First Migrations 更新数据库结构