VS2017 MVC+EF模式使用DB First模式连接使用Oracle数据库

一:插件与环境准备

1、ODAC for Visual Studio 2017  (下载安装)

2、Oracle.ManagedDataAccess   (项目内引用)

3、Oracle.ManagedDataAccess.EntityFramework(项目内引用)

* 以上三个软件或插件的版本号必须一致,示例均以 18.3版本操作。
比如下载的 “ODAC for Visual Studio 2017“ 插件版本为18.3
则项目内引用”Oracle.ManagedDataAccess“、”Oracle.ManagedDataAccess.EntityFramework“插件版本也必须为 18.3

附上”ODAC for Visual Studio 2017“下载链接:
 https://www.oracle.com/database/technologies/dotnet-odacmsi-vs2017-downloads.html

A:下载完成后先安装,下一步.....直至完成即可。

B:tnsnames文件修改
在路径:C:\Program Files (x86)\Oracle Developer Tools for VS2017\network\admin  下的”tnsnames“配置文件加入你的Oracle数据库的配置信息。
VS2017 MVC+EF模式使用DB First模式连接使用Oracle数据库

以上操作完成以后,剩下的操作步骤就都在VS中完成了。

二:创建MVC项目>引用Oracle插件
A:项目名右键,选择“管理NuGet程序包”。

B:在NuGet程序包界面,切换到 “浏览“选项卡,输入"Orcale"
先安装”Oracle.ManagedDataAccess“,再安装”Oracle.ManagedDataAccess.EntityFramework“。
切记版本必须与事先下载安装的”ODAC for Visual Studio 2017“的版本一致。
VS2017 MVC+EF模式使用DB First模式连接使用Oracle数据库

三:创建EF实体数据模型
A:在Model层添加一个 ADO.NET实体数据模型
VS2017 MVC+EF模式使用DB First模式连接使用Oracle数据库

B:DBFirst 选择
VS2017 MVC+EF模式使用DB First模式连接使用Oracle数据库|

C:  报错先跳过,后面处理。点击新建链接。

VS2017 MVC+EF模式使用DB First模式连接使用Oracle数据库

VS2017 MVC+EF模式使用DB First模式连接使用Oracle数据库


D:选择”Oracle Database“,下方选择 ”ODP.NET,托管驱动程序“
VS2017 MVC+EF模式使用DB First模式连接使用Oracle数据库


E:数据源选择前面在”tnsnames“配置文件中配置好的,输入数据库ID和密码  (ID会自动变大写,忽略就好)。
   填好密码后点击 ”测试连接“。

VS2017 MVC+EF模式使用DB First模式连接使用Oracle数据库

VS2017 MVC+EF模式使用DB First模式连接使用Oracle数据库

测试连接成功后就进行下一步,失败了就检查”tnsnames“配置文件中配置的信息与账号密码。


VS2017 MVC+EF模式使用DB First模式连接使用Oracle数据库

VS2017 MVC+EF模式使用DB First模式连接使用Oracle数据库


四:项目Web.config信息修改>数据操作示例
 

A:修改Web.Config文件中的 ”OracleDbContext“ 字符串的Oracle数据库名、账户名、密码。
必须与生成的EF数据实体的字符串配置保持一致。(注意ID 大小写也要保持一致)。

EF模型是通过”OracleDbContext“与数据库进行交互(增删改查),所以必须与EF模型配置统一。

VS2017 MVC+EF模式使用DB First模式连接使用Oracle数据库

VS2017 MVC+EF模式使用DB First模式连接使用Oracle数据库

B:数据操作示例

VS2017 MVC+EF模式使用DB First模式连接使用Oracle数据库




问题解决方式:
1.若添加EF实体模型在选择实体框架界面发生闪退现象,检查文章第一步中说的三个插件版本是否统一。
2.查询数据等与数据库交互出现"ora 12514 tns 无法解析指定的连接标识符" 报错,检查文章第四步中说的
OracleDbContext“字符串与EF模型的连接字符串,账户密码是否一致。