网站首页 > 技术文章 正文
Entity Framework 6 Database-first连接Oracle11g(图文细说)
目前Oracle已经推出了托管的ODP.NET驱动来连接Oracle数据库。已经支持Code First,那么到目前位置,EF的三种模式都是可以操作Oracle数据库的了。
相关文档:
正文:
好吧,我们开始来一个实际的例子。
首先创建一个基于.net 4.5的MVC demo。名字叫做
EntityFrameworkSixForOracle的工程。如下
创建完成后,我们打开Nuget包管理器,安装一些包。
在Nuget包管理器中搜索 ManagedDataAccess
这里先安装第二个,也就是oracle.ManagedDataAccess,然后再安装
oracle.ManagedDataAccess.EntityFramework。
原因是因为安装
oracle.ManagedDataAccess.EntityFramework后自动安装oracle.ManagedDataAccess,但是oracle.ManagedDataAccess的版本较低,好像这两个不同步,导致之后出现未知错误(仅怀疑,未验证)。
然后将Entity Framework更新到最新版。
好的,到这步,引用工作就完成了。接下来配置DataBase-First。
在项目中创建一个文件夹Db,然后添加新项=》数据=》ADO.NET实体数据模型。
点击上面的更改,然后可以看到目前所有的数据源,一般情况下,只有前面的两项,第三项Oracle数据库是没有的。我们需要自行安装Oracle官方提供的驱动程序。
我这里提供官方下载页面,这需要有Oracle的帐号,另外也下载回来测试成功后,将安装包上传到CSDN,大家直接下载安装即可。
下载回来的是一个58.69MB的安装包,默认安装就可以了。
上面Oracle官方说明的截图已经很明白了,这是一个集成于Visual Studio 2015的Oracle驱动工具。另外,官方还提供了VS2013的集成工具。
安装完成后,重启VS,重复上面的步骤,会发现已经有了Oracle数据库 源这一项。好了,问题解决,我们继续。
选择Oracle数据库这一项,出现以下界面:
这里需要说明一下的,当前正在使用的Tnsnames.ora,若是我们配置的监听文件不在上面显示的位置,则点击搜索,去自动查找,选择位置和别名后,点击复制,就可以将自己Tns的相关配置,复制到驱动程序的Tns里面了,再或者,直接用我们自己的Tns文件替换掉默认驱动程序的Tns也是可以的。
以上配置完成后,点击测试,即可测试连接成功。这一步若是有什么不懂的地方,请留言。
弄好之后,确定保存。
然后选择需要导入的表,或者视图。最后单击完成即可。
如此,EF6 Database-First模式连接Oracle11g的实例就完成了 。
添加一个控制器,写一个查询测试一下。
查询前这个表的前100条看看。
好的,数据出来了,成功!
PS:使用oracle.ManagedDataAccess驱动的话,发布的应用不用再在本地安装Oracle客户端。
常见错误汇总(随时更新):
1、在从数据库更新模型的时候,提示模型已生成,但出现警告或错误。
这是因为数据建表不规范,连最基本的主键都没有。
下一章说 EF6 Code-first连接Oracle11g
猜你喜欢
- 2025-09-01 Python定时任务,三步实现自动化_python定时任务,三步实现自动化
- 2025-09-01 (三)Java基础知识复习(异常处理)_java异常处理规则(新手必看)
- 2025-09-01 情人节脱单秘诀,程序员表白的情话大盘点!| CSDN 博文精选
- 2025-09-01 这几道面试题,可以考考自己_面试考什么题
- 2025-09-01 教程3 猜数字游戏_猜数字游戏玩法
- 2025-09-01 Go 学习:那些不一样的知识点(下)_不一样的知识的英文
- 2025-09-01 execute和submit的区别_execute和implement的区别
- 2025-09-01 异常处理_异常处理培训心得怎么写
- 2025-09-01 catch at和catch up with的区别是什么
- 2025-09-01 优秀程序员需要掌握的代码整洁之道
- 最近发表
-
- C语言重要吗?_c语言重要吗计算机专业
- 2024 年顶级 C# 面试问题和答案_c#面试题及答案2020
- C#调用C++编写的DLL需要通过P/Invoke机制实现
- 掌握 C# 和 .NET:常用术语与概念_c#.net教程
- C++ .NET与C# .NET:谁才是.NET开发的“真香”选择?
- 是C++好,带GC的Java、C#好?还是Rust好?
- 为什么有人一直喜欢 C 而不喜欢 C++?
- Python定时任务,三步实现自动化_python定时任务,三步实现自动化
- (三)Java基础知识复习(异常处理)_java异常处理规则(新手必看)
- 情人节脱单秘诀,程序员表白的情话大盘点!| CSDN 博文精选
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- windowsscripthost (69)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)